diff --git a/src/locales/messages.pot b/src/locales/messages.pot index a1ea71e95c..729634caf8 100644 --- a/src/locales/messages.pot +++ b/src/locales/messages.pot @@ -260,6 +260,9 @@ msgstr "" msgid "The portion this recipient will receive out of the {reservedRate}% of the project's reserved token issuance." msgstr "" +msgid "Cash out your tokens for a portion of this project's treasury" +msgstr "" + msgid "Reserved rate:" msgstr "" @@ -458,6 +461,9 @@ msgstr "" msgid "Project Details" msgstr "" +msgid "No ETH can be paid out from the project. The ETH can only be accessed by token holders that cash out their tokens." +msgstr "" + msgid "This account hasn't contributed to any projects yet." msgstr "" @@ -869,6 +875,9 @@ msgstr "" msgid "How SharkDAO raised over 1,000 ETH to buy 6 Nouns NFTs and become the largest sub-DAO of Nouns DAO" msgstr "" +msgid "Cash out {tokenTicker}" +msgstr "" + msgid "USD value of ETH received" msgstr "" @@ -1340,6 +1349,9 @@ msgstr "" msgid "Payments" msgstr "" +msgid "Cash out your tokens to reclaim some ETH that isn't needed for payouts. This cycle's <0>redemption rate determines the amount of ETH you'll receive." +msgstr "" + msgid "Juicebox Project" msgstr "" @@ -1376,6 +1388,9 @@ msgstr "" msgid "Transfer ETH to this project" msgstr "" +msgid "When people pay your project, they receive its tokens. Project tokens can be used for governance or community access, and token holders can cash out their tokens to reclaim some ETH from your project. You can also reserve some tokens for recipients of your choosing." +msgstr "" + msgid "Using a duration is recommended. Without one, you can edit your cycle at any time, which may appear risky." msgstr "" @@ -1637,6 +1652,9 @@ msgstr "" msgid "Juicebox project" msgstr "" +msgid "Connect wallet to cash out" +msgstr "" + msgid "No upcoming cycle" msgstr "" @@ -1700,9 +1718,15 @@ msgstr "" msgid "Edited" msgstr "" +msgid "Cash out tokens for a portion of this project's treasury" +msgstr "" + msgid "Send {tokensText}" msgstr "" +msgid "You cash out" +msgstr "" + msgid "Not set" msgstr "" @@ -2207,6 +2231,9 @@ msgstr "" msgid "Controller migration" msgstr "" +msgid "You can cash out your {tokenTextLong} for ETH without claiming them. You can transfer your unclaimed {tokenTextLong} to another address from the Tools menu, which can be accessed from the wrench icon in the upper right-hand corner of this project." +msgstr "" + msgid "JBX membership fee ({0}%):" msgstr "" @@ -2972,6 +2999,9 @@ msgstr "" msgid "Download project activity CSVs" msgstr "" +msgid "Cash out" +msgstr "" + msgid "Cycle duration" msgstr "" @@ -3236,6 +3266,9 @@ msgstr "" msgid "Juicebox is built for the people, by the people." msgstr "" +msgid "Cash out tokens" +msgstr "" + msgid "Sent payouts" msgstr "" @@ -3548,6 +3581,9 @@ msgstr "" msgid "NFTs, tokens and rewards will be sent to <0/>" msgstr "" +msgid "Cash out {tokensTextLong} for ETH" +msgstr "" + msgid "See the code" msgstr "" @@ -3944,6 +3980,9 @@ msgstr "" msgid "payout" msgstr "" +msgid "Tokens to cash out" +msgstr "" + msgid "Cycle" msgstr "" @@ -4286,6 +4325,9 @@ msgstr "" msgid "Allow Controller migration" msgstr "" +msgid "No tokens to cash out." +msgstr "" + msgid "Turn on unlimited payouts, and convert all your payout amounts to percentages." msgstr "" diff --git a/src/packages/v4/components/Create/Create.tsx b/src/packages/v4/components/Create/Create.tsx index 5ee0878445..e930453fc9 100644 --- a/src/packages/v4/components/Create/Create.tsx +++ b/src/packages/v4/components/Create/Create.tsx @@ -1,26 +1,23 @@ -import { - DEADLINE_EXPLANATION, - RULESET_EXPLANATION -} from 'components/strings' import { Trans, t } from '@lingui/macro' +import { DEADLINE_EXPLANATION, RULESET_EXPLANATION } from 'components/strings' import { Badge } from 'components/Badge' -import { CreateBadge } from './components/CreateBadge' -import { DeployProjectButtonText } from './DeployProjectButtonText' -import { DeploySuccess } from './components/pages/ReviewDeploy/components/DeploySuccess' -import { FundingCyclesPage } from './components/pages/FundingCycles/FundingCyclesPage' import Loading from 'components/Loading' +import { readNetwork } from 'constants/networks' import { NetworkName } from 'models/networkName' +import { useRouter } from 'next/router' +import { CreateBadge } from './components/CreateBadge' +import { FundingCyclesPage } from './components/pages/FundingCycles/FundingCyclesPage' import { NftRewardsPage } from './components/pages/NftRewards/NftRewardsPage' import { PayoutsPage } from './components/pages/PayoutsPage/PayoutsPage' import { ProjectDetailsPage } from './components/pages/ProjectDetails/ProjectDetailsPage' import { ProjectTokenPage } from './components/pages/ProjectToken/ProjectTokenPage' import { ReconfigurationRulesPage } from './components/pages/ReconfigurationRules/ReconfigurationRulesPage' +import { DeploySuccess } from './components/pages/ReviewDeploy/components/DeploySuccess' import { ReviewDeployPage } from './components/pages/ReviewDeploy/ReviewDeployPage' import { Wizard } from './components/Wizard/Wizard' -import { readNetwork } from 'constants/networks' +import { DeployProjectButtonText } from './DeployProjectButtonText' import { useLoadingInitialStateFromQuery } from './hooks/useLoadInitialStateFromQuery' -import { useRouter } from 'next/router' export function Create() { const router = useRouter() @@ -37,7 +34,7 @@ export function Create() { return (

- + Create a project Beta @@ -80,7 +77,7 @@ export function Create() { When people pay your project, they receive its tokens. Project tokens can be used for governance or community access, and token - holders can redeem their tokens to reclaim some ETH from your + holders can cash out their tokens to reclaim some ETH from your project. You can also reserve some tokens for recipients of your choosing. diff --git a/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/RedeemConfiguration.tsx b/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/RedeemConfiguration.tsx index 9bc6a79225..a2a81f225e 100644 --- a/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/RedeemConfiguration.tsx +++ b/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/RedeemConfiguration.tsx @@ -144,9 +144,9 @@ export const RedeemConfiguration: React.FC = ({ - {t`You redeem`} + {t`You cash out`} } token={{ @@ -196,10 +196,10 @@ export const RedeemConfiguration: React.FC = ({ insufficientBalance ? ( Insufficient balance ) : ( - Redeem {tokenTicker} + Cash out {tokenTicker} ) ) : ( - Connect wallet to redeem + Connect wallet to cash out )}

diff --git a/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/V4PayRedeemCard.tsx b/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/V4PayRedeemCard.tsx index ddf2baa873..237bbf2e31 100644 --- a/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/V4PayRedeemCard.tsx +++ b/src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/V4PayRedeemCard.tsx @@ -86,13 +86,13 @@ export const V4PayRedeemCard: React.FC = ({ {redeemDisabled ? null : ( { dispatch(payRedeemActions.changeToRedeem()) }} disabled={!redeems.enabled} > - Redeem + Cash out )} diff --git a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4BurnOrRedeemModal.tsx b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4BurnOrRedeemModal.tsx index 5bb6e3d5cf..0cad61615e 100644 --- a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4BurnOrRedeemModal.tsx +++ b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4BurnOrRedeemModal.tsx @@ -120,7 +120,7 @@ export function V4BurnOrRedeemModal({ includeTokenWord: true, }) if (canRedeem) { - return t`Redeem ${tokensTextLong} for ETH` + return t`Cash out ${tokensTextLong} for ETH` } return t`Burn ${tokensTextLong}` }, [canRedeem, token.data?.symbol]) @@ -247,7 +247,7 @@ export function V4BurnOrRedeemModal({
- Redeem your tokens to reclaim some ETH that isn't needed for + Cash out your tokens to reclaim some ETH that isn't needed for payouts. This cycle's redemption rate{' '} determines the amount of ETH you'll receive. @@ -307,7 +307,7 @@ export function V4BurnOrRedeemModal({ name="redeemAmount" label={ canRedeem ? ( - Tokens to redeem + Tokens to cash out ) : ( Tokens to burn ) diff --git a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4ClaimTokensModal.tsx b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4ClaimTokensModal.tsx index 4198629406..15df4e22a5 100644 --- a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4ClaimTokensModal.tsx +++ b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4ClaimTokensModal.tsx @@ -9,7 +9,12 @@ import TransactionModal from 'components/modals/TransactionModal' import { TxHistoryContext } from 'contexts/Transaction/TxHistoryContext' import { useWallet } from 'hooks/Wallet' import { Ether } from 'juice-sdk-core' -import { useJBContractContext, useJBTokenContext, useReadJbTokensCreditBalanceOf, useWriteJbControllerClaimTokensFor } from 'juice-sdk-react' +import { + useJBContractContext, + useJBTokenContext, + useReadJbTokensCreditBalanceOf, + useWriteJbControllerClaimTokensFor, +} from 'juice-sdk-react' import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token' import { wagmiConfig } from 'packages/v4/wagmiConfig' import { useContext, useLayoutEffect, useState } from 'react' @@ -68,22 +73,22 @@ export function V4ClaimTokensModal({ userAddress, projectId, parseWad(claimAmount).toBigInt(), - userAddress + userAddress, ] as const try { // SIMULATE TX: // const encodedData = encodeFunctionData({ - // abi: jbControllerAbi, - // functionName: 'claimTokensFor', - // args, + // abi: jbControllerAbi, + // functionName: 'claimTokensFor', + // args, // }) // console.log('encodedData:', encodedData) // console.log('contract:', contracts.controller.data) const hash = await writeClaimTokens({ address: contracts.controller.data, - args, + args, }) setTransactionPending(true) @@ -152,10 +157,10 @@ export function V4ClaimTokensModal({

- You can redeem your {tokenTextLong} for ETH without claiming them. - You can transfer your unclaimed {tokenTextLong} to another address - from the Tools menu, which can be accessed from the wrench icon in - the upper right-hand corner of this project. + You can cash out your {tokenTextLong} for ETH without claiming + them. You can transfer your unclaimed {tokenTextLong} to another + address from the Tools menu, which can be accessed from the wrench + icon in the upper right-hand corner of this project.

@@ -164,7 +169,7 @@ export function V4ClaimTokensModal({ Your unclaimed {tokenTextLong}} > - {new Ether(unclaimedBalance ?? 0n).format()}{' '}{tokenTextShort} + {new Ether(unclaimedBalance ?? 0n).format()} {tokenTextShort} {hasIssuedTokens && tokenSymbol && ( diff --git a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4RedeemTokensButton.tsx b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4RedeemTokensButton.tsx index 4cc06070ef..2ddbbccfee 100644 --- a/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4RedeemTokensButton.tsx +++ b/src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4RedeemTokensButton.tsx @@ -39,7 +39,7 @@ export const V4RedeemTokensButton = ({ const redeemDisabledTooltip = useMemo(() => { if (!userTokenBalance || userTokenBalance === 0n) - return t`No tokens to redeem.` + return t`No tokens to cash out.` if (!hasSurplus) return t`This project has no ETH, or is using all of its ETH for payouts.` if (payoutLimit === 0n) return t`This project has redemptions turned off.` @@ -59,7 +59,7 @@ export const V4RedeemTokensButton = ({ disabled={redeemTokensDisabled} onClick={redeemTokensDisabled ? undefined : openModal} > - Redeem tokens + Cash out tokens No ETH can be paid out from the project. The ETH can only be - accessed by token holders that redeem their tokens. + accessed by token holders that cash out their tokens. ) : ( @@ -56,9 +56,7 @@ export function PayoutLimitValue({ ) : distributionLimitIsZero ? ( <>{shortName ? Zero : Zero (no payouts)} ) : ( - + ) return (