diff --git a/packages/react-app-revamp/components/ChargeLayout/components/Submission/index.tsx b/packages/react-app-revamp/components/ChargeLayout/components/Submission/index.tsx index fbaf64644..698cc38bf 100644 --- a/packages/react-app-revamp/components/ChargeLayout/components/Submission/index.tsx +++ b/packages/react-app-revamp/components/ChargeLayout/components/Submission/index.tsx @@ -1,34 +1,36 @@ import Collapsible from "@components/UI/Collapsible"; +import { chains } from "@config/wagmi"; +import { extractPathSegments } from "@helpers/extractPath"; import { formatBalance } from "@helpers/formatBalance"; import shortenEthereumAddress from "@helpers/shortenEthereumAddress"; import { ChevronUpIcon } from "@heroicons/react/24/outline"; -import { SplitFeeDestination } from "@hooks/useDeployContest/types"; +import { Charge } from "@hooks/useDeployContest/types"; +import { GetBalanceReturnType } from "@wagmi/core"; import Image from "next/image"; +import { usePathname } from "next/navigation"; import { FC, useState } from "react"; +import { formatEther } from "viem"; +import { useAccount } from "wagmi"; import ChargeLayoutCommisionDetails from "../CommisionDetails"; interface ChargeLayoutSubmissionProps { - userAddress: string; - balance: string; - entryChargeFormatted: string; - splitFeeDestination: SplitFeeDestination; - commisionValue: string; - nativeCurrencySymbol: string; - nativeCurrencyLabel: string; - insufficientBalance: boolean; + charge: Charge; + accountData: GetBalanceReturnType; } -const ChargeLayoutSubmission: FC = ({ - userAddress, - balance, - nativeCurrencySymbol, - nativeCurrencyLabel, - entryChargeFormatted, - commisionValue, - splitFeeDestination, - insufficientBalance, -}) => { +const ChargeLayoutSubmission: FC = ({ charge, accountData }) => { const [isEntryChargeDetailsOpen, setIsEntryChargeDetailsOpen] = useState(false); + const { address } = useAccount(); + const asPath = usePathname(); + const { chainName } = extractPathSegments(asPath ?? ""); + const chainUnitLabel = chains.find((c: { name: string }) => c.name.toLowerCase() === chainName.toLowerCase()) + ?.nativeCurrency.symbol; + const chargeAmount = charge.type.costToPropose; + const insufficientBalance = accountData.value < chargeAmount; + const entryChargeFormatted = formatEther(BigInt(chargeAmount)); + const entryChargeHalfFormatted = formatEther(BigInt(chargeAmount / 2)); + const commissionValue = charge.percentageToCreator > 0 ? entryChargeHalfFormatted : entryChargeFormatted; + const accountBalance = formatEther(accountData.value); return (
@@ -36,23 +38,22 @@ const ChargeLayoutSubmission: FC = ({
wallet -

- {shortenEthereumAddress(userAddress ?? "")} +

+ {shortenEthereumAddress(address ?? "")}

- {insufficientBalance ?

insufficient funds

: null} + {insufficientBalance &&

insufficient funds

}
-

- {formatBalance(balance)} {nativeCurrencySymbol} available + {formatBalance(accountBalance)} {accountData.symbol} available

-
+
= ({
-

- {entryChargeFormatted} {nativeCurrencyLabel} (+gas) + {entryChargeFormatted} {chainUnitLabel} (+gas)

diff --git a/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/ChargeInfo/index.tsx b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/ChargeInfo/index.tsx new file mode 100644 index 000000000..c1bdb8cc9 --- /dev/null +++ b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/ChargeInfo/index.tsx @@ -0,0 +1,40 @@ +import { chains } from "@config/wagmi"; +import { extractPathSegments } from "@helpers/extractPath"; +import { Charge, VoteType } from "@hooks/useDeployContest/types"; +import { usePathname } from "next/navigation"; +import React from "react"; +import { formatEther } from "viem"; + +interface ChargeInfoProps { + charge: Charge; +} + +const ChargeInfo: React.FC = ({ charge }) => { + const asPath = usePathname(); + const { chainName } = extractPathSegments(asPath ?? ""); + const chainUnitLabel = chains.find((c: { name: string }) => c.name.toLowerCase() === chainName.toLowerCase()) + ?.nativeCurrency.symbol; + const chargeAmount = charge.type.costToVote; + const chargeLabel = charge.voteType === VoteType.PerVote ? "charge per vote" : "charge to vote"; + const entryChargeFormatted = formatEther(BigInt(chargeAmount)); + + if (charge.type.costToPropose === 0 && charge.type.costToVote === 0) { + return ( +
+

charge to vote:

+

gas fees only

+
+ ); + } + + return ( +
+

{chargeLabel}:

+

+ {entryChargeFormatted} {chainUnitLabel} +

+
+ ); +}; + +export default ChargeInfo; diff --git a/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/MyVotes/index.tsx b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/MyVotes/index.tsx new file mode 100644 index 000000000..179297228 --- /dev/null +++ b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/MyVotes/index.tsx @@ -0,0 +1,44 @@ +import { formatBalance } from "@helpers/formatBalance"; +import { formatNumberAbbreviated } from "@helpers/formatNumber"; +import { Charge, VoteType } from "@hooks/useDeployContest/types"; +import React from "react"; +import { useAccount, useBalance } from "wagmi"; + +interface MyVotesProps { + amountOfVotes: number; + charge: Charge | null; + chainId?: number; +} + +const MyVotes: React.FC = ({ charge, amountOfVotes, chainId }) => { + const { address } = useAccount(); + const { data: balanceData } = useBalance({ + address, + chainId, + }); + + const insufficientBalance = charge && balanceData ? balanceData.value < BigInt(charge.type.costToVote) : false; + + return ( +
+ my votes: +
+ {balanceData && charge?.voteType === VoteType.PerVote && ( + <> + + {formatBalance(balanceData.formatted)} {balanceData.symbol} + + = + + )} + + {formatNumberAbbreviated(amountOfVotes)} vote{amountOfVotes !== 1 ? "s" : ""} + +
+
+ ); +}; + +export default MyVotes; diff --git a/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/TotalCharge/index.tsx b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/TotalCharge/index.tsx new file mode 100644 index 000000000..6392b7b4b --- /dev/null +++ b/packages/react-app-revamp/components/ChargeLayout/components/Vote/components/TotalCharge/index.tsx @@ -0,0 +1,50 @@ +import { chains } from "@config/wagmi"; +import { extractPathSegments } from "@helpers/extractPath"; +import { Charge } from "@hooks/useDeployContest/types"; +import { usePathname } from "next/navigation"; +import React, { useEffect, useState } from "react"; +import { formatEther } from "viem"; +interface TotalChargeProps { + charge: Charge; + amountOfVotes: number; +} + +const TotalCharge: React.FC = ({ charge: contestCharge, amountOfVotes }) => { + const [totalCharge, setTotalCharge] = useState("0"); + const asPath = usePathname(); + const { chainName } = extractPathSegments(asPath ?? ""); + const chainUnitLabel = chains.find((c: { name: string }) => c.name.toLowerCase() === chainName.toLowerCase()) + ?.nativeCurrency.symbol; + + useEffect(() => { + if (isNaN(amountOfVotes)) { + setTotalCharge("0"); + return; + } + + if (contestCharge.type.costToVote === 0 && contestCharge.type.costToPropose === 0) { + setTotalCharge("0"); + return; + } + + if (contestCharge.voteType === "PerVote") { + const chargeAmount = parseFloat(formatEther(BigInt(contestCharge.type.costToVote))); + const multipliedCharge = chargeAmount * amountOfVotes; + const charge = +multipliedCharge.toFixed(6); + setTotalCharge(charge.toString()); + } else { + setTotalCharge(formatEther(BigInt(contestCharge.type.costToVote))); + } + }, [contestCharge, amountOfVotes]); + + return ( +
+

total charge:

+

+ {totalCharge} {chainUnitLabel} +

+
+ ); +}; + +export default TotalCharge; diff --git a/packages/react-app-revamp/components/ChargeLayout/components/Vote/index.tsx b/packages/react-app-revamp/components/ChargeLayout/components/Vote/index.tsx deleted file mode 100644 index 6060f3386..000000000 --- a/packages/react-app-revamp/components/ChargeLayout/components/Vote/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { formatBalance } from "@helpers/formatBalance"; -import shortenEthereumAddress from "@helpers/shortenEthereumAddress"; -import { VoteType } from "@hooks/useDeployContest/types"; -import Image from "next/image"; -import { FC, useEffect, useState } from "react"; - -interface ChargeLayoutVoteProps { - chargeType: VoteType; - userAddress: string; - balance: string; - nativeCurrencySymbol: string; - entryChargeFormatted: string; - insufficientBalance: boolean; - amountOfVotes?: number; -} - -const ChargeLayoutVote: FC = ({ - chargeType, - userAddress, - balance, - nativeCurrencySymbol, - entryChargeFormatted, - insufficientBalance, - amountOfVotes, -}) => { - const chargeLabel = chargeType === VoteType.PerVote ? "charge per vote" : "vote charge"; - const isPerVote = chargeType === VoteType.PerVote; - const [totalCharge, setTotalCharge] = useState("0"); - - useEffect(() => { - if (!amountOfVotes) { - setTotalCharge("0"); - return; - } - - if (isPerVote) { - const chargeAmount = parseFloat(entryChargeFormatted); - const multipliedCharge = chargeAmount * amountOfVotes ?? 1; - const charge = +multipliedCharge.toFixed(6); - - setTotalCharge(charge.toString()); - } - }, [amountOfVotes, entryChargeFormatted, isPerVote]); - - return ( -
-
-
-
-
- wallet -

{shortenEthereumAddress(userAddress ?? "")}

-
-
- -

- {formatBalance(balance)} {nativeCurrencySymbol} -

-
-
-

{chargeLabel}

-

- {entryChargeFormatted} {nativeCurrencySymbol} -

-
-
- - {isPerVote ? ( -
-

total charge

-

- {totalCharge} {nativeCurrencySymbol} -

-
- ) : null} -
- ); -}; - -export default ChargeLayoutVote; diff --git a/packages/react-app-revamp/components/ChargeLayout/index.tsx b/packages/react-app-revamp/components/ChargeLayout/index.tsx deleted file mode 100644 index 0bd46591f..000000000 --- a/packages/react-app-revamp/components/ChargeLayout/index.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { chains } from "@config/wagmi"; -import { extractPathSegments } from "@helpers/extractPath"; -import { Charge, VoteType } from "@hooks/useDeployContest/types"; -import { type GetBalanceReturnType } from "@wagmi/core"; -import { usePathname } from "next/navigation"; -import { FC } from "react"; -import { formatEther } from "viem"; -import { useAccount } from "wagmi"; -import ChargeLayoutSubmission from "./components/Submission"; -import ChargeLayoutVote from "./components/Vote"; - -interface DialogModalSendProposalEntryChargeLayoutProps { - charge: Charge; - accountData: GetBalanceReturnType; - type: "propose" | "vote"; - amountOfVotes?: number; -} - -const ChargeLayout: FC = ({ - charge, - accountData, - type, - amountOfVotes, -}) => { - const { address } = useAccount(); - const asPath = usePathname(); - const { chainName } = extractPathSegments(asPath ?? ""); - const chainUnitLabel = chains.find((c: { name: string }) => c.name.toLowerCase() === chainName.toLowerCase()) - ?.nativeCurrency.symbol; - const chargeAmount = type === "propose" ? charge.type.costToPropose : charge.type.costToVote; - const insufficientBalance = accountData.value < chargeAmount; - const insufficientBalanceForVotes = - charge.voteType === VoteType.PerVote - ? accountData.value < chargeAmount * (amountOfVotes ?? 1) - : accountData.value < chargeAmount; - const entryChargeFormatted = formatEther(BigInt(chargeAmount)); - const entryChargeHalfFormatted = formatEther(BigInt(chargeAmount / 2)); - const commissionValue = charge.percentageToCreator > 0 ? entryChargeHalfFormatted : entryChargeFormatted; - const accountBalance = formatEther(accountData.value); - - if (type === "propose") { - return ( - - ); - } - - return ( - - ); -}; - -export default ChargeLayout; diff --git a/packages/react-app-revamp/components/UI/AddToHomeScreen/index.tsx b/packages/react-app-revamp/components/UI/AddToHomeScreen/index.tsx index 1b39ff6ff..aff59b834 100644 --- a/packages/react-app-revamp/components/UI/AddToHomeScreen/index.tsx +++ b/packages/react-app-revamp/components/UI/AddToHomeScreen/index.tsx @@ -32,7 +32,7 @@ const AddToHomeScreenPopup = () => { className="text-sm mx-auto w-[350px] overflow-y-auto rounded-[10px] px-4 pt-4 pb-6 bg-true-black" > -
+
{isSupportedBrowser ? ( diff --git a/packages/react-app-revamp/components/UI/DialogModal/index.tsx b/packages/react-app-revamp/components/UI/DialogModal/index.tsx index cd0ac9f9b..878976fc2 100644 --- a/packages/react-app-revamp/components/UI/DialogModal/index.tsx +++ b/packages/react-app-revamp/components/UI/DialogModal/index.tsx @@ -26,7 +26,7 @@ const DialogModal: FC = ({ isOpen, setIsOpen, title, children, className={`text-sm mx-auto max-h-screen overflow-y-auto 2xs:min-h-auto 2xs:max-h-[calc(100vh-60px)] w-full max-w-screen-2xs border px-4 pt-4 pb-6 border-primary-10 border-opacity-40 bg-neutral-0 2xs:rounded-lg ${className}`} > {title} -
+
diff --git a/packages/react-app-revamp/components/Voting/index.tsx b/packages/react-app-revamp/components/Voting/index.tsx index ca5473774..84745c2fa 100644 --- a/packages/react-app-revamp/components/Voting/index.tsx +++ b/packages/react-app-revamp/components/Voting/index.tsx @@ -1,49 +1,57 @@ -import ChargeLayout from "@components/ChargeLayout"; +import ChargeInfo from "@components/ChargeLayout/components/Vote/components/ChargeInfo"; +import MyVotes from "@components/ChargeLayout/components/Vote/components/MyVotes"; +import TotalCharge from "@components/ChargeLayout/components/Vote/components/TotalCharge"; import ButtonV3, { ButtonSize, ButtonType } from "@components/UI/ButtonV3"; import StepSlider from "@components/UI/Slider"; import { chains, config } from "@config/wagmi"; import { extractPathSegments } from "@helpers/extractPath"; -import { formatNumber } from "@helpers/formatNumber"; -import { ChevronRightIcon } from "@heroicons/react/24/outline"; import { useCastVotesStore } from "@hooks/useCastVotes/store"; import { useContestStore } from "@hooks/useContest/store"; import { ContestStateEnum, useContestStateStore } from "@hooks/useContestState/store"; -import { useFetchUserVotesOnProposal } from "@hooks/useFetchUserVotesOnProposal"; import { switchChain } from "@wagmi/core"; import { usePathname } from "next/navigation"; -import { FC, useState } from "react"; -import { useAccount, useBalance } from "wagmi"; +import { FC, useEffect, useRef, useState } from "react"; +import { useAccount } from "wagmi"; interface VotingWidgetProps { proposalId: string; amountOfVotes: number; downvoteAllowed?: boolean; + isWidgetInModal?: boolean; onVote?: (amount: number, isUpvote: boolean) => void; } -const VotingWidget: FC = ({ proposalId, amountOfVotes, downvoteAllowed, onVote }) => { +const VotingWidget: FC = ({ + proposalId, + amountOfVotes, + downvoteAllowed, + isWidgetInModal, + onVote, +}) => { const { charge } = useContestStore(state => state); const asPath = usePathname(); - const { address, chainId: accountChainId } = useAccount(); - const { data: accountData } = useBalance({ - address: address as `0x${string}`, - }); - const { address: contestAddress, chainName } = extractPathSegments(asPath ?? ""); + const { chainId: accountChainId } = useAccount(); + const { chainName } = extractPathSegments(asPath ?? ""); const { isLoading } = useCastVotesStore(state => state); const [isUpvote, setIsUpvote] = useState(true); const [amount, setAmount] = useState(0); const [sliderValue, setSliderValue] = useState(0); const [isInvalid, setIsInvalid] = useState(false); - const [isFocused, setIsFocused] = useState(false); + const [isFocused, setIsFocused] = useState(true); const voteDisabled = isLoading || amount === 0 || isInvalid || isNaN(amount); const chainId = chains.filter( (chain: { name: string }) => chain.name.toLowerCase().replace(" ", "") === chainName, )?.[0]?.id; const isCorrectNetwork = chainId === accountChainId; - const showVoteCharge = charge && charge.type.costToVote && accountData && isCorrectNetwork; - const { currentUserVotesOnProposal } = useFetchUserVotesOnProposal(contestAddress, proposalId); const { contestState } = useContestStateStore(state => state); const isContestCanceled = contestState === ContestStateEnum.Canceled; + const inputRef = useRef(null); + + useEffect(() => { + if (inputRef.current) { + inputRef.current.focus(); + } + }, []); const handleClick = (value: boolean) => { setIsUpvote(value); @@ -119,93 +127,87 @@ const VotingWidget: FC = ({ proposalId, amountOfVotes, downvo if (isContestCanceled) return null; return ( -
-
-
- {downvoteAllowed ? ( -
-
handleClick(true)} - > - upvote +
+
+
+

add votes

+
+ {downvoteAllowed ? ( +
+
handleClick(true)} + > + upvote +
+
handleClick(false)} + > + downvote +
+
+ ) : null} +
+
+ + {charge ? : null}
handleClick(false)} + className={`relative flex w-full md:w-80 h-16 items-center px-4 text-[16px] bg-transparent font-bold ${ + isInvalid ? "text-negative-11" : "text-neutral-11" + } border-2 ${isFocused && !isInvalid ? "border-neutral-11" : isInvalid ? "border-negative-11" : "border-neutral-10"} rounded-[40px] transition-colors duration-300`} > - downvote + handleChange(e.target.value)} + onFocus={() => setIsFocused(true)} + onBlur={() => setIsFocused(false)} + placeholder="0.00" + max={amountOfVotes} + onKeyDown={handleKeyDownInput} + onInput={handleInput} + className="w-full text-center text-[32px] bg-transparent outline-none placeholder-neutral-9" + /> + + vote{amount !== 1 ? "s" : ""} + +
+
+ + {charge ? : null}
-
- ) : null} -
- Amount -
- handleChange(e.target.value)} - onFocus={() => setIsFocused(true)} - onBlur={() => setIsFocused(false)} - placeholder="0 votes" - max={amountOfVotes} - onKeyDown={handleKeyDownInput} - onInput={handleInput} - className="text-right w-24 bg-transparent outline-none mr-1 placeholder-neutral-10" - /> - {amount > 0 && vote{amount !== 1 ? "s" : ""}}
- -
-
-

votes on submission

-

{formatNumber(currentUserVotesOnProposal.data ?? 0)}

-
-
-

my remaining votes

-

{formatNumber(amountOfVotes)}

-
+
+ {isCorrectNetwork ? ( + onVote?.(amount, isUpvote)} + > + add votes to entry + + ) : ( + + switch network + + )}
- -
- - {showVoteCharge ? ( - - ) : null} - -
- {isCorrectNetwork ? ( - onVote?.(amount, isUpvote)} - > - add votes - - - ) : ( - - switch network - - )} -
); }; diff --git a/packages/react-app-revamp/components/_pages/Contest/components/Prompt/Proposal/index.tsx b/packages/react-app-revamp/components/_pages/Contest/components/Prompt/Proposal/index.tsx index 855974b77..40133be37 100644 --- a/packages/react-app-revamp/components/_pages/Contest/components/Prompt/Proposal/index.tsx +++ b/packages/react-app-revamp/components/_pages/Contest/components/Prompt/Proposal/index.tsx @@ -77,7 +77,7 @@ const ContestProposal: FC = ({ proposal, proposalId, conte return (
= ({ return (
-

{contestTitle}

-
- {contestType} +
+ + + {contestTitle} + +
+ )} + + {readFullEntry && ( + <> + + + )} -
-
-
-
- + ); }; diff --git a/packages/react-app-revamp/components/_pages/ProposalContent/components/ImageWithFallback/index.tsx b/packages/react-app-revamp/components/_pages/ProposalContent/components/ImageWithFallback/index.tsx index 622e804f1..b0638fea1 100644 --- a/packages/react-app-revamp/components/_pages/ProposalContent/components/ImageWithFallback/index.tsx +++ b/packages/react-app-revamp/components/_pages/ProposalContent/components/ImageWithFallback/index.tsx @@ -1,5 +1,4 @@ -import NextImage from "next/image"; -import { useState, useEffect } from "react"; +import React, { useState, useEffect } from "react"; import { useQuery } from "@tanstack/react-query"; interface ImageWithFallbackProps { @@ -7,6 +6,8 @@ interface ImageWithFallbackProps { fullSrc: string; alt: string; containerWidth: number; + isExpanded: boolean; + onImageLoad: (showResizeButton: boolean) => void; } interface ImageData { @@ -24,9 +25,14 @@ const preloadImage = async (src: string): Promise => { }); }; -const ImageWithFallback: React.FC = ({ mediumSrc, fullSrc, alt, containerWidth }) => { - const [isExpanded, setIsExpanded] = useState(false); - const [showResizeButton, setShowResizeButton] = useState(false); +const ImageWithFallback: React.FC = ({ + mediumSrc, + fullSrc, + alt, + containerWidth, + isExpanded, + onImageLoad, +}) => { const [useMediumImage, setUseMediumImage] = useState(true); const { data: mediumImage, isLoading: isMediumLoading } = useQuery({ @@ -50,46 +56,24 @@ const ImageWithFallback: React.FC = ({ mediumSrc, fullSr const widthDifference = Math.abs(mediumImage.width - containerWidth); const threshold = 0.1; // 10% difference const significantDifference = widthDifference / containerWidth > threshold; - setShowResizeButton(significantDifference); + onImageLoad(significantDifference); } else { - setShowResizeButton(false); + onImageLoad(false); } } - }, [mediumImage, fullImage, containerWidth]); - - const toggleExpand = (e: React.MouseEvent) => { - e.preventDefault(); - e.stopPropagation(); - setIsExpanded(!isExpanded); - }; + }, [mediumImage, fullImage, containerWidth, onImageLoad]); const currentImage = isExpanded || !useMediumImage ? fullImage : mediumImage; const isLoading = isExpanded || !useMediumImage ? isFullLoading : isMediumLoading; return ( -
- {alt} - {showResizeButton && ( -
- -
- )} -
+ {alt} ); }; diff --git a/packages/react-app-revamp/components/_pages/ProposalContent/index.tsx b/packages/react-app-revamp/components/_pages/ProposalContent/index.tsx index edb6a6c63..23cb77529 100644 --- a/packages/react-app-revamp/components/_pages/ProposalContent/index.tsx +++ b/packages/react-app-revamp/components/_pages/ProposalContent/index.tsx @@ -2,7 +2,7 @@ import { extractPathSegments } from "@helpers/extractPath"; import { formatNumberAbbreviated } from "@helpers/formatNumber"; import { Tweet as TweetType } from "@helpers/isContentTweet"; -import { loadFromLocalStorage, removeFromLocalStorage, saveToLocalStorage } from "@helpers/localStorage"; +import { removeFromLocalStorage } from "@helpers/localStorage"; import { ChatBubbleLeftEllipsisIcon, CheckIcon, TrashIcon } from "@heroicons/react/24/outline"; import { useCastVotesStore } from "@hooks/useCastVotes/store"; import { useContestStore } from "@hooks/useContest/store"; @@ -84,6 +84,8 @@ const ProposalContent: FC = ({ }; const containerRef = useRef(null); const [containerWidth, setContainerWidth] = useState(0); + const [isImageExpanded, setIsImageExpanded] = useState(false); + const [showResizeButton, setShowResizeButton] = useState(false); useEffect(() => { const updateWidth = () => { @@ -97,15 +99,6 @@ const ProposalContent: FC = ({ return () => window.removeEventListener("resize", updateWidth); }, []); - useEffect(() => { - clearStorageIfNeeded(); - - const visibilityState = loadFromLocalStorage(HIDDEN_PROPOSALS_STORAGE_KEY, {}); - const hiddenProposals = visibilityState[contestAddress] || []; - - setIsContentHidden(hiddenProposals.includes(proposal.id)); - }, [contestAddress, proposal.id]); - const handleVotingModalOpen = () => { if (isContestCanceled) { alert("This contest has been canceled and voting is terminated."); @@ -132,30 +125,17 @@ const ProposalContent: FC = ({ }; const toggleContentVisibility = () => { - const newVisibility = !isContentHidden; - setIsContentHidden(newVisibility); - - const visibilityState = loadFromLocalStorage(HIDDEN_PROPOSALS_STORAGE_KEY, {}); - let hiddenProposals = visibilityState[contestAddress] || []; - - if (newVisibility) { - // addd proposal id to hidden list if not already there - if (!hiddenProposals.includes(proposal.id)) { - hiddenProposals = [...hiddenProposals, proposal.id]; - } - } else { - // remove proposal id from hidden list - hiddenProposals = hiddenProposals.filter(id => id !== proposal.id); - } + setIsContentHidden(!isContentHidden); + }; - if (hiddenProposals.length > 0) { - visibilityState[contestAddress] = hiddenProposals; - } else { - // if there are no hidden proposals, remove the contest from the visibility state - delete visibilityState[contestAddress]; - } + const handleImageLoad = (canResize: boolean) => { + setShowResizeButton(canResize); + }; - saveToLocalStorage(HIDDEN_PROPOSALS_STORAGE_KEY, visibilityState); + const toggleImageExpand = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsImageExpanded(!isImageExpanded); }; const transform = (node: HTMLElement, children: Node[]): ReactNode => { @@ -169,6 +149,8 @@ const ProposalContent: FC = ({ fullSrc={src} alt={node.getAttribute("alt") ?? ""} containerWidth={containerWidth} + isExpanded={isImageExpanded} + onImageLoad={handleImageLoad} /> ); } @@ -178,16 +160,28 @@ const ProposalContent: FC = ({ return (
- +
+ + {showResizeButton && !isContentHidden && ( + + )} +
- {!isContentHidden ? ( + {!isContentHidden && (
@@ -229,7 +223,6 @@ const ProposalContent: FC = ({ alt="upvote" className="flex-shrink-0" /> -

{formatNumberAbbreviated(proposal.votes)} vote{proposal.votes !== 1 ? "s" : ""}

@@ -239,7 +232,6 @@ const ProposalContent: FC = ({ voting opens {formattedVotingOpen.format("MMMM Do, h:mm a")}

)} - = ({
toggleProposalSelection?.(proposal.id)}>
)}
- ) : null} + )}
diff --git a/packages/react-app-revamp/components/_pages/Submission/Mobile/index.tsx b/packages/react-app-revamp/components/_pages/Submission/Mobile/index.tsx index 7414fb05c..8b906afdb 100644 --- a/packages/react-app-revamp/components/_pages/Submission/Mobile/index.tsx +++ b/packages/react-app-revamp/components/_pages/Submission/Mobile/index.tsx @@ -6,7 +6,7 @@ import VotingWidget from "@components/Voting"; import ContestPrompt from "@components/_pages/Contest/components/Prompt"; import ContestProposal from "@components/_pages/Contest/components/Prompt/Proposal"; import ListProposalVotes from "@components/_pages/ListProposalVotes"; -import { formatNumber } from "@helpers/formatNumber"; +import { formatNumberAbbreviated } from "@helpers/formatNumber"; import ordinalize from "@helpers/ordinalize"; import { generateUrlSubmissions } from "@helpers/share"; import { ArrowLeftIcon } from "@heroicons/react/24/outline"; @@ -79,7 +79,7 @@ const SubmissionPageMobileLayout: FC = ({ return ( -
+
= ({
{proposalData?.proposal ? ( -
+
+ {proposalData.proposal.rank > 0 && (
-

- {formatNumber(proposalData.proposal.votes)} vote{proposalData.proposal.votes > 1 ? "s" : ""} -

{" "}

+ {formatNumberAbbreviated(proposalData.proposal.votes)} vote + {proposalData.proposal.votes > 1 ? "s" : ""} +

+ {" "} +

{ordinalize(proposalData.proposal.rank).label} place{" "} {proposalData.proposal.isTied ? "(tied)" : ""}

)} -
) : null}
diff --git a/packages/react-app-revamp/config/wagmi/custom-chains/weavevmTestnet.ts b/packages/react-app-revamp/config/wagmi/custom-chains/weavevmTestnet.ts index b6f8bb4cb..1727cff64 100644 --- a/packages/react-app-revamp/config/wagmi/custom-chains/weavevmTestnet.ts +++ b/packages/react-app-revamp/config/wagmi/custom-chains/weavevmTestnet.ts @@ -21,4 +21,5 @@ export const weavevmTestnet: Chain = { etherscan: { name: "WeaveVM Block Explorer", url: "https://explorer.wvm.dev" }, default: { name: "WeaveVM Block Explorer", url: "https://explorer.wvm.dev" }, }, + testnet: true, }; diff --git a/packages/react-app-revamp/config/wagmi/server.ts b/packages/react-app-revamp/config/wagmi/server.ts index 6b341b00b..df26bce27 100644 --- a/packages/react-app-revamp/config/wagmi/server.ts +++ b/packages/react-app-revamp/config/wagmi/server.ts @@ -100,6 +100,7 @@ import { taiko } from "./custom-chains/taiko"; import { taikoTestnet } from "./custom-chains/taikoTestnet"; import { unique } from "./custom-chains/unique"; import { vitruveo } from "./custom-chains/vitruveo"; +import { weavevmTestnet } from "./custom-chains/weavevmTestnet"; import { xLayer } from "./custom-chains/xLayer"; import { xLayerTestnet } from "./custom-chains/xLayerTestnet"; import { zetaTestnet } from "./custom-chains/zetaTestnet"; @@ -212,6 +213,7 @@ export const chains: readonly [Chain, ...Chain[]] = [ movementTestnet, kaiaTestnet, fluentTestnet, + weavevmTestnet, formaTestnet, kakarotTestnet, mainnet, diff --git a/packages/react-app-revamp/package.json b/packages/react-app-revamp/package.json index e95824c55..b24058ce7 100644 --- a/packages/react-app-revamp/package.json +++ b/packages/react-app-revamp/package.json @@ -11,18 +11,18 @@ "@aws-sdk/client-s3": "3.635.0", "@aws-sdk/s3-request-presigner": "3.635.0", "@babel/core": "7.25.2", - "@babel/preset-env": "7.25.3", + "@babel/preset-env": "7.25.4", "@clustersxyz/sdk": "0.4.3", "@headlessui/react": "2.1.2", "@heroicons/react": "2.1.5", "@lens-protocol/client": "2.3.1", "@lens-protocol/metadata": "1.2.0", - "@next/third-parties": "14.2.5", - "@rainbow-me/rainbowkit": "2.1.4", + "@next/third-parties": "14.2.6", + "@rainbow-me/rainbowkit": "2.1.5", "@supabase/supabase-js": "2.45.1", "@tailwindcss/line-clamp": "0.4.4", "@tailwindcss/typography": "0.5.14", - "@tanstack/react-query": "5.52.0", + "@tanstack/react-query": "5.52.1", "@tiptap/core": "2.4.0", "@tiptap/extension-image": "2.4.0", "@tiptap/extension-link": "2.4.0", @@ -51,11 +51,11 @@ "compare-versions": "6.1.1", "date-fns": "3.6.0", "eslint": "9.9.0", - "eslint-config-next": "14.2.5", + "eslint-config-next": "14.2.6", "ethers": "5.7.2", "frog": "0.11.4", "fuse.js": "7.0.0", - "hono": "4.5.7", + "hono": "4.5.8", "i18next": "23.14.0", "interweave": "13.1.0", "interweave-autolink": "5.1.1", @@ -65,7 +65,7 @@ "merkletreejs": "0.4.0", "moment": "2.30.1", "moment-timezone": "0.5.45", - "next": "14.2.5", + "next": "14.2.6", "next-pwa": "5.6.0", "nextjs-current-url": "1.0.3", "nextjs-toploader": "1.6.12", @@ -105,9 +105,9 @@ "underscore": "1.13.7", "uuid": "10.0.0", "valibot": "0.38.0", - "viem": "2.19.8", + "viem": "2.20.0", "wagmi": "2.12.7", - "webpack": "5.93.0", + "webpack": "5.94.0", "zod": "3.23.8", "zustand": "4.5.5" } diff --git a/yarn.lock b/yarn.lock index 0ea908355..dd64aa056 100644 --- a/yarn.lock +++ b/yarn.lock @@ -684,6 +684,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== +"@babel/compat-data@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb" + integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ== + "@babel/core@7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" @@ -766,6 +771,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.4.tgz#1dc63c1c9caae9e6dc24e264eac254eb25005669" + integrity sha512-NFtZmZsyzDPJnk9Zg3BbTfKKc9UlHYzD0E//p2Z3B9nCwwtJW9T0gVbCz8+fBngnn4zf1Dr3IK8PHQQHq0lDQw== + dependencies: + "@babel/types" "^7.25.4" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -869,6 +884,19 @@ "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14" + integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.4" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" @@ -896,6 +924,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" + integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + regexpu-core "^5.3.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" @@ -918,7 +955,7 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": +"@babel/helper-define-polyfill-provider@^0.6.2": version "0.6.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== @@ -1307,6 +1344,13 @@ dependencies: "@babel/types" "^7.25.2" +"@babel/parser@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a" + integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA== + dependencies: + "@babel/types" "^7.25.4" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" @@ -1646,15 +1690,15 @@ "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-generator-functions@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" - integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== +"@babel/plugin-transform-async-generator-functions@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz#2afd4e639e2d055776c9f091b6c0c180ed8cf083" + integrity sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg== dependencies: "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-remap-async-to-generator" "^7.25.0" "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.0" + "@babel/traverse" "^7.25.4" "@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.23.3": version "7.23.3" @@ -1710,13 +1754,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== +"@babel/plugin-transform-class-properties@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz#bae7dbfcdcc2e8667355cd1fb5eda298f05189fd" + integrity sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-class-static-block@^7.23.4": version "7.23.4" @@ -1750,16 +1794,16 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-classes@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" - integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== +"@babel/plugin-transform-classes@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz#d29dbb6a72d79f359952ad0b66d88518d65ef89a" + integrity sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg== dependencies: "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-compilation-targets" "^7.25.2" "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-replace-supers" "^7.25.0" - "@babel/traverse" "^7.25.0" + "@babel/traverse" "^7.25.4" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.23.3": @@ -2205,13 +2249,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== +"@babel/plugin-transform-private-methods@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz#9bbefbe3649f470d681997e0b64a4b254d877242" + integrity sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.4" + "@babel/helper-plugin-utils" "^7.24.8" "@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" @@ -2457,20 +2501,20 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== +"@babel/plugin-transform-unicode-sets-regex@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz#be664c2a0697ffacd3423595d5edef6049e8946c" + integrity sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/preset-env@7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" - integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== +"@babel/preset-env@7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.4.tgz#be23043d43a34a2721cd0f676c7ba6f1481f6af6" + integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw== dependencies: - "@babel/compat-data" "^7.25.2" + "@babel/compat-data" "^7.25.4" "@babel/helper-compilation-targets" "^7.25.2" "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-validator-option" "^7.24.8" @@ -2499,13 +2543,13 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-generator-functions" "^7.25.4" "@babel/plugin-transform-async-to-generator" "^7.24.7" "@babel/plugin-transform-block-scoped-functions" "^7.24.7" "@babel/plugin-transform-block-scoping" "^7.25.0" - "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.25.4" "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-classes" "^7.25.4" "@babel/plugin-transform-computed-properties" "^7.24.7" "@babel/plugin-transform-destructuring" "^7.24.8" "@babel/plugin-transform-dotall-regex" "^7.24.7" @@ -2533,7 +2577,7 @@ "@babel/plugin-transform-optional-catch-binding" "^7.24.7" "@babel/plugin-transform-optional-chaining" "^7.24.8" "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.25.4" "@babel/plugin-transform-private-property-in-object" "^7.24.7" "@babel/plugin-transform-property-literals" "^7.24.7" "@babel/plugin-transform-regenerator" "^7.24.7" @@ -2546,10 +2590,10 @@ "@babel/plugin-transform-unicode-escapes" "^7.24.7" "@babel/plugin-transform-unicode-property-regex" "^7.24.7" "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.4" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" core-js-compat "^3.37.1" semver "^6.3.1" @@ -2813,6 +2857,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.4.tgz#648678046990f2957407e3086e97044f13c3e18e" + integrity sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.4" + "@babel/parser" "^7.25.4" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.4" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.4.4": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" @@ -2858,6 +2915,15 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.4": + version "7.25.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.4.tgz#6bcb46c72fdf1012a209d016c07f769e10adcb5f" + integrity sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bufbuild/protobuf@^1.7.2": version "1.8.0" resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-1.8.0.tgz#1c8651ea34adb8019b483e09de02aeeb1cd57d79" @@ -4836,15 +4902,15 @@ resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.6.tgz#c1148e2e1aa166614f05161ee8f77ded467062bc" integrity sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw== -"@next/env@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.5.tgz#1d9328ab828711d3517d0a1d505acb55e5ef7ad0" - integrity sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA== +"@next/env@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.6.tgz#4f8ab1ca549a90bf0c83454b798b0ebae7098b15" + integrity sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g== -"@next/eslint-plugin-next@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.5.tgz#f7e3ff3efe40a2855e5f29bc2692175f85913ba8" - integrity sha512-LY3btOpPh+OTIpviNojDpUdIbHW9j0JBYBjsIp8IxtDFfYFyORvw3yNq6N231FVqQA7n7lwaf7xHbVJlA1ED7g== +"@next/eslint-plugin-next@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.6.tgz#e5bb8851c12cc7599f14a0a507670e3f792b1639" + integrity sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A== dependencies: glob "10.3.10" @@ -4853,95 +4919,95 @@ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz#b15d139d8971360fca29be3bdd703c108c9a45fb" integrity sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA== -"@next/swc-darwin-arm64@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz#d0a160cf78c18731c51cc0bff131c706b3e9bb05" - integrity sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ== +"@next/swc-darwin-arm64@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.6.tgz#38dfd8716e52dd1f52cfd3e461721d3e984887c6" + integrity sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg== "@next/swc-darwin-x64@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz#9c72ee31cc356cb65ce6860b658d807ff39f1578" integrity sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA== -"@next/swc-darwin-x64@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz#eb832a992407f6e6352eed05a073379f1ce0589c" - integrity sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA== +"@next/swc-darwin-x64@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.6.tgz#605a6fafbdd672d72728db86aae0fea67e3338f9" + integrity sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ== "@next/swc-linux-arm64-gnu@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz#59f5f66155e85380ffa26ee3d95b687a770cfeab" integrity sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg== -"@next/swc-linux-arm64-gnu@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz#098fdab57a4664969bc905f5801ef5a89582c689" - integrity sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA== +"@next/swc-linux-arm64-gnu@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.6.tgz#2a4d3c6d159c70ded6b415cbf6d7082bd823e37d" + integrity sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg== "@next/swc-linux-arm64-musl@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz#f012518228017052736a87d69bae73e587c76ce2" integrity sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q== -"@next/swc-linux-arm64-musl@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz#243a1cc1087fb75481726dd289c7b219fa01f2b5" - integrity sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA== +"@next/swc-linux-arm64-musl@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.6.tgz#db4850182cef343a6539d646d613f2f0333a4dc1" + integrity sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ== "@next/swc-linux-x64-gnu@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz#339b867a7e9e7ee727a700b496b269033d820df4" integrity sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw== -"@next/swc-linux-x64-gnu@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz#b8a2e436387ee4a52aa9719b718992e0330c4953" - integrity sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ== +"@next/swc-linux-x64-gnu@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.6.tgz#dbd75f0c3b3b3fb5c4ace0b5b52b050409701b3e" + integrity sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag== "@next/swc-linux-x64-musl@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz#ae0ae84d058df758675830bcf70ca1846f1028f2" integrity sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ== -"@next/swc-linux-x64-musl@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz#cb8a9adad5fb8df86112cfbd363aab5c6d32757b" - integrity sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ== +"@next/swc-linux-x64-musl@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.6.tgz#b045235257e78c87878b3651cb9c7b553a20005b" + integrity sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ== "@next/swc-win32-arm64-msvc@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz#a5cc0c16920485a929a17495064671374fdbc661" integrity sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg== -"@next/swc-win32-arm64-msvc@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz#81f996c1c38ea0900d4e7719cc8814be8a835da0" - integrity sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw== +"@next/swc-win32-arm64-msvc@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.6.tgz#be6ec8b97db574d9c2625fd181b6fa3e4625c29d" + integrity sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ== "@next/swc-win32-ia32-msvc@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz#6a2409b84a2cbf34bf92fe714896455efb4191e4" integrity sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg== -"@next/swc-win32-ia32-msvc@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz#f61c74ce823e10b2bc150e648fc192a7056422e0" - integrity sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg== +"@next/swc-win32-ia32-msvc@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz#bc215a8488f10042c21890a83e79eee9e84cff6d" + integrity sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ== "@next/swc-win32-x64-msvc@13.5.6": version "13.5.6" resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz#4a3e2a206251abc729339ba85f60bc0433c2865d" integrity sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ== -"@next/swc-win32-x64-msvc@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz#ed199a920efb510cfe941cd75ed38a7be21e756f" - integrity sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g== +"@next/swc-win32-x64-msvc@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.6.tgz#6b63a7b4ff3b7b410a038e3ee839c951a3136dc9" + integrity sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw== -"@next/third-parties@14.2.5": - version "14.2.5" - resolved "https://registry.yarnpkg.com/@next/third-parties/-/third-parties-14.2.5.tgz#7161d266547cabfb61b8af9721f83f8b5463a572" - integrity sha512-PDRJm8RZ3rnGNporHKjcdCeZqoW8iJ5uP0clo1Z08TqJiQzuntJ66zrGYCJyqTakx62UJNOp73YsQCFo6kbYYg== +"@next/third-parties@14.2.6": + version "14.2.6" + resolved "https://registry.yarnpkg.com/@next/third-parties/-/third-parties-14.2.6.tgz#4423a5ed85658ac9b227ba5e65470b1bcd92f52f" + integrity sha512-gIayZnFgiir4HlyrqI/KS+MB4y82oVfSYYH4QwHa2KNOtCjX6etF8/cX3pSeSGsQi2VFiI+a9LL+MDMRYgIIoQ== dependencies: third-party-capital "1.0.20" @@ -5111,10 +5177,10 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@rainbow-me/rainbowkit@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-2.1.4.tgz#2001d5ff808d0074103bc085bd05a197d5327ed5" - integrity sha512-dJ92cGERc5FcyqFRJRh4iUi2IBS26pBAM1NSL7J2LNxqtOfeOAuAvzVFtJUxDCidS0/hNbvPY47GU68QpW4g6A== +"@rainbow-me/rainbowkit@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-2.1.5.tgz#913169f9fb4518cff8fe2856ea2333e754b8bb00" + integrity sha512-Kdef0zu0bUlIOlbyyi3ukmQl7k8s3w0jTcWZxYTicZ/N4L35yX0vEzYgiG4u6OSXlbAQaC7VrkPKugPbSohnLQ== dependencies: "@vanilla-extract/css" "1.14.0" "@vanilla-extract/dynamic" "2.1.0" @@ -7601,10 +7667,10 @@ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.52.0.tgz#44070b2d6eb58c3a5ce2788471d842e932294a87" integrity sha512-U1DOEgltjUwalN6uWYTewSnA14b+tE7lSylOiASKCAO61ENJeCq9VVD/TXHA6O5u9+6v5+UgGYBSccTKDoyMqw== -"@tanstack/react-query@5.52.0": - version "5.52.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.52.0.tgz#671478798f1873983807cf6f62b140c817b3cc9f" - integrity sha512-T8tLZdPEopSD3A1EBZ/sq7WkI76pKLKKiT82F486K8wf26EPgYCdeiSnJfuayssdQjWwLQMQVl/ROUBNmlWgCQ== +"@tanstack/react-query@5.52.1": + version "5.52.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.52.1.tgz#d454e2bb86ab21621de016c7044514d6412db7ee" + integrity sha512-soyn4dNIUZ8US8NaPVXv06gkZFHaZnPfKWPDjRJjFRW3Y7WZ0jx72eT6zhw3VQlkMPysmXye8l35ewPHspKgbQ== dependencies: "@tanstack/query-core" "5.52.0" @@ -7850,32 +7916,16 @@ resolved "https://registry.yarnpkg.com/@types/dom-screen-wake-lock/-/dom-screen-wake-lock-1.0.3.tgz#c3588a5f6f40fae957f9ce5be9bc4927a61bb9a0" integrity sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw== -"@types/eslint-scope@^3.7.3": - version "3.7.7" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" - integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.56.5" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.5.tgz#94b88cab77588fcecdd0771a6d576fa1c0af9d02" - integrity sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -7913,7 +7963,7 @@ resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" integrity sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA== -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -9427,13 +9477,13 @@ babel-plugin-polyfill-corejs2@^0.4.8: "@babel/helper-define-polyfill-provider" "^0.6.0" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== +babel-plugin-polyfill-corejs3@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" babel-plugin-polyfill-corejs3@^0.9.0: version "0.9.0" @@ -10189,13 +10239,20 @@ core-js-compat@^3.31.0, core-js-compat@^3.34.0: dependencies: browserslist "^4.22.3" -core-js-compat@^3.36.1, core-js-compat@^3.37.1: +core-js-compat@^3.37.1: version "3.37.1" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: browserslist "^4.23.0" +core-js-compat@^3.38.0: + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" + integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== + dependencies: + browserslist "^4.23.3" + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -10774,10 +10831,10 @@ enhanced-resolve@^5.12.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^5.17.0: - version "5.17.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" - integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== +enhanced-resolve@^5.17.1: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -11166,12 +11223,12 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-next@14.2.5: - version "14.2.5" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.5.tgz#cdd43d89047eb7391ba25445d5855b4600b6adb9" - integrity sha512-zogs9zlOiZ7ka+wgUnmcM0KBEDjo4Jis7kxN1jvC0N4wynQ2MIx/KBkg4mVF63J5EK4W0QMCn7xO3vNisjaAoA== +eslint-config-next@14.2.6: + version "14.2.6" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.6.tgz#43623683155540feff830b08956a57ece8148d8f" + integrity sha512-z0URA5LO6y8lS/YLN0EDW/C4LEkDODjJzA37dvLVdzCPzuewjzTe1os5g3XclZAZrQ8X8hPaSMQ2JuVWwMmrTA== dependencies: - "@next/eslint-plugin-next" "14.2.5" + "@next/eslint-plugin-next" "14.2.6" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" eslint-import-resolver-node "^0.3.6" @@ -12257,10 +12314,10 @@ hono-og@0.0.27: "@vercel/og" "~0.6.2" workers-og "~0.0.23" -hono@4.5.7: - version "4.5.7" - resolved "https://registry.yarnpkg.com/hono/-/hono-4.5.7.tgz#f8b3162bb13288a7af4626dc82dc54542f483c82" - integrity sha512-7GeBa+zuZ6rXQEcsYvoAafLNgDr3IMxoMlU1JUc23Buy99FaUpjB0viKIFOsfnzMdEp7RhPL6uLYsVuddjdMvw== +hono@4.5.8: + version "4.5.8" + resolved "https://registry.yarnpkg.com/hono/-/hono-4.5.8.tgz#212ee54b214cd90ecc44904b6f00ee58a9af32b8" + integrity sha512-pqpSlcdqGkpTTRpLYU1PnCz52gVr0zVR9H5GzMyJWuKQLLEBQxh96q45QizJ2PPX8NATtz2mu31/PKW/Jt+90Q== htmlparser2@^9.1.0: version "9.1.0" @@ -14171,12 +14228,12 @@ next-pwa@5.6.0: workbox-webpack-plugin "^6.5.4" workbox-window "^6.5.4" -next@14.2.5: - version "14.2.5" - resolved "https://registry.yarnpkg.com/next/-/next-14.2.5.tgz#afe4022bb0b752962e2205836587a289270efbea" - integrity sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA== +next@14.2.6: + version "14.2.6" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.6.tgz#2d294fe1ac806231cffd52ae2cf2e469b940536d" + integrity sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g== dependencies: - "@next/env" "14.2.5" + "@next/env" "14.2.6" "@swc/helpers" "0.5.5" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -14184,15 +14241,15 @@ next@14.2.5: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.2.5" - "@next/swc-darwin-x64" "14.2.5" - "@next/swc-linux-arm64-gnu" "14.2.5" - "@next/swc-linux-arm64-musl" "14.2.5" - "@next/swc-linux-x64-gnu" "14.2.5" - "@next/swc-linux-x64-musl" "14.2.5" - "@next/swc-win32-arm64-msvc" "14.2.5" - "@next/swc-win32-ia32-msvc" "14.2.5" - "@next/swc-win32-x64-msvc" "14.2.5" + "@next/swc-darwin-arm64" "14.2.6" + "@next/swc-darwin-x64" "14.2.6" + "@next/swc-linux-arm64-gnu" "14.2.6" + "@next/swc-linux-arm64-musl" "14.2.6" + "@next/swc-linux-x64-gnu" "14.2.6" + "@next/swc-linux-x64-musl" "14.2.6" + "@next/swc-win32-arm64-msvc" "14.2.6" + "@next/swc-win32-ia32-msvc" "14.2.6" + "@next/swc-win32-x64-msvc" "14.2.6" next@^13.4.7: version "13.5.6" @@ -17874,10 +17931,10 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -viem@2.19.8: - version "2.19.8" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.19.8.tgz#25de37d7ba3e8c0a549450b5f8268c374a098917" - integrity sha512-2SkT6kHgp1MZnPl+fJ8kT2Eozv2tOuri30DI5dSnOecJpvachZY5PdgCdvXw7AUZCwNUkLX9ZEpKqyhqjQoUPg== +viem@2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.20.0.tgz#abff4c2cf733bcc20978e662ea17db117a2881ef" + integrity sha512-cM4vs81HnSNbfceI1MLkx4pCVzbVjl9xiNSv5SCutYjUyFFOVSPDlEyhpg2iHinxx1NM4Qne3END5eLT8rvUdg== dependencies: "@adraffy/ens-normalize" "1.10.0" "@noble/curves" "1.4.0" @@ -18095,12 +18152,11 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.93.0: - version "5.93.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5" - integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== +webpack@5.94.0: + version "5.94.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f" + integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg== dependencies: - "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" "@webassemblyjs/ast" "^1.12.1" "@webassemblyjs/wasm-edit" "^1.12.1" @@ -18109,7 +18165,7 @@ webpack@5.93.0: acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0"