diff --git a/app/[locale]/developers/tutorials/_components/tutorials.tsx b/app/[locale]/developers/tutorials/_components/tutorials.tsx index bcd860496dd..e458bc72ac5 100644 --- a/app/[locale]/developers/tutorials/_components/tutorials.tsx +++ b/app/[locale]/developers/tutorials/_components/tutorials.tsx @@ -8,6 +8,7 @@ import React, { useMemo, useState, } from "react" +import { ExternalLink } from "lucide-react" import { useLocale } from "next-intl" import { ITutorial, Lang } from "@/lib/types" @@ -198,13 +199,11 @@ const TutorialsList = ({ internalTutorials }: TutorialsListProps) => { href={tutorial.href ?? undefined} > - + {tutorial.title} + {tutorial.isExternal && ( + + )} diff --git a/app/[locale]/stablecoins/page.tsx b/app/[locale]/stablecoins/page.tsx index f0c8cbd8267..56506cb8aca 100644 --- a/app/[locale]/stablecoins/page.tsx +++ b/app/[locale]/stablecoins/page.tsx @@ -1,5 +1,5 @@ import { pick } from "lodash" -import { HelpCircle } from "lucide-react" +import { Info } from "lucide-react" import { getMessages, getTranslations, @@ -94,6 +94,7 @@ const loadData = dataLoader<[CoinGeckoCoinMarketResponse]>( async function Page({ params }: { params: Promise<{ locale: Lang }> }) { const { locale } = await params const t = await getTranslations({ locale, namespace: "page-stablecoins" }) + const tCommon = await getTranslations({ locale, namespace: "common" }) setRequestLocale(locale) @@ -248,7 +249,7 @@ async function Page({ params }: { params: Promise<{ locale: Lang }> }) { const tooltipContent = (
- {t("common:data-provided-by")}{" "} + {tCommon("data-provided-by")}{" "} coingecko.com @@ -555,9 +556,9 @@ async function Page({ params }: { params: Promise<{ locale: Lang }> }) {

- {t("page-stablecoins-top-coins")} + {t("page-stablecoins-top-coins")}  - +

diff --git a/app/[locale]/staking/deposit-contract/_components/deposit-contract.tsx b/app/[locale]/staking/deposit-contract/_components/deposit-contract.tsx index f806f1c260c..46144e8bf84 100644 --- a/app/[locale]/staking/deposit-contract/_components/deposit-contract.tsx +++ b/app/[locale]/staking/deposit-contract/_components/deposit-contract.tsx @@ -1,7 +1,7 @@ "use client" - import { useEffect, useState } from "react" import makeBlockie from "ethereum-blockies-base64" +import { Clipboard, ClipboardCheck } from "lucide-react" import type { ChildOnlyProp, TranslationKey } from "@/lib/types" @@ -375,16 +375,13 @@ const DepositContractPage = () => { {!isCopied ? ( <> - {t("page-staking-deposit-contract-copy")} + ) : ( <> - {t("page-staking-deposit-contract-copied")} + )} diff --git a/public/content/translations/fa/zero-knowledge-proofs/index.md b/public/content/translations/fa/zero-knowledge-proofs/index.md index cb47fa9a1c9..5e1408b84a7 100644 --- a/public/content/translations/fa/zero-knowledge-proofs/index.md +++ b/public/content/translations/fa/zero-knowledge-proofs/index.md @@ -108,7 +108,7 @@ lang: fa استفاده از MACI نیازمند اعتماد به هماهنگ‌کننده مبنی بر تبانی نکردن با رشوه‌دهندگان یا تلاش برای رشوه دادن رای‌دهندگان از سوی او است. هماهنگ‌کننده می‌تواند پیام‌های کاربران را رمزگشایی کند (برای ایجاد اثبات لازم است)، بنابراین آن‌ها می‌توانند نحوۀ رای دادن هر فرد را به‌ طور دقیق تایید کنند. -اما در مواردی که هماهنگ‌کننده صادق است، MACI ابزاری قدرتمند برای تضمین سلامت رای‌گیری آنچین است. این امر بیان‌کنندۀ دلیل محبوبیت آن در میان برنامه‌های تامین مالی ثانویه (مانند [↗clr.fund](https://clr.fund/#/about/maci)) است که به‌شدت بر صحت آرای تک‌تک افراد متکی است. +اما در مواردی که هماهنگ‌کننده صادق است، MACI ابزاری قدرتمند برای تضمین سلامت رای‌گیری آنچین است. این امر بیان‌کنندۀ دلیل محبوبیت آن در میان برنامه‌های تامین مالی ثانویه (مانند [clr.fund](https://clr.fund/#/about/maci)) است که به‌شدت بر صحت آرای تک‌تک افراد متکی است. [درباره MACI بیشتر بدانید](https://privacy-scaling-explorations.github.io/maci/). diff --git a/src/components/BigNumber/index.tsx b/src/components/BigNumber/index.tsx index f5a038073d5..fef399bec85 100644 --- a/src/components/BigNumber/index.tsx +++ b/src/components/BigNumber/index.tsx @@ -50,26 +50,29 @@ const BigNumber = async ({
{children} {sourceName && sourceUrl && ( - -

- {t("data-provided-by")}{" "} - {sourceName} -

- {lastUpdated && ( -

- {t("last-updated")}: {lastUpdatedDisplay} + <> +   + +

+ {t("data-provided-by")}{" "} + {sourceName}

- )} - - } - > - -
+ {lastUpdated && ( +

+ {t("last-updated")}: {lastUpdatedDisplay} +

+ )} + + } + > + + + )}
diff --git a/src/components/CardList.tsx b/src/components/CardList.tsx index f6230250eb6..91c9caf1b36 100644 --- a/src/components/CardList.tsx +++ b/src/components/CardList.tsx @@ -1,5 +1,6 @@ "use client" +import { ExternalLink } from "lucide-react" import TwImage, { type ImageProps } from "next/image" import type { ReactNode } from "react" @@ -72,7 +73,9 @@ const Card = ({
{caption}
)} - {isExternal && } + {isExternal && ( + + )} ) } diff --git a/src/components/CodeModal.tsx b/src/components/CodeModal.tsx index 8ef3b3bae0c..938008a14bc 100644 --- a/src/components/CodeModal.tsx +++ b/src/components/CodeModal.tsx @@ -1,5 +1,5 @@ import { Children, type ReactElement } from "react" -import { Check, Copy } from "lucide-react" +import { Clipboard, ClipboardCheck } from "lucide-react" import { Button } from "./ui/buttons/Button" import { @@ -43,11 +43,13 @@ const CodeModal = ({ children, isOpen, setIsOpen, title }: CodeModalProps) => { > {hasCopied ? ( <> - {t("copied")} + {t("copied")} + ) : ( <> - {t("copy")} + {t("copy")} + )} diff --git a/src/components/Codeblock.tsx b/src/components/Codeblock.tsx index dc91bdea881..3e014544463 100644 --- a/src/components/Codeblock.tsx +++ b/src/components/Codeblock.tsx @@ -1,6 +1,6 @@ "use client" - import React, { useState } from "react" +import { Clipboard, ClipboardCheck } from "lucide-react" import Highlight, { defaultProps, Language, @@ -10,7 +10,6 @@ import Prism from "prism-react-renderer/prism" // https://github.com/FormidableLabs/prism-react-renderer/tree/master#custom-language-support import CopyToClipboard from "@/components/CopyToClipboard" -import Emoji from "@/components/Emoji" import { Flex } from "@/components/ui/flex" import { cn } from "@/lib/utils/cn" @@ -304,16 +303,13 @@ const Codeblock = ({ {!isCopied ? ( <> - {" "} {t("copy")} + ) : ( <> - {" "} {t("copied")} + )} diff --git a/src/components/CopyToClipboard.tsx b/src/components/CopyToClipboard.tsx index 82d04db92e4..f173ba42ba1 100644 --- a/src/components/CopyToClipboard.tsx +++ b/src/components/CopyToClipboard.tsx @@ -1,6 +1,6 @@ "use client" -import { CheckCircle, Copy } from "lucide-react" +import { Clipboard, ClipboardCheck } from "lucide-react" import { cn } from "@/lib/utils/cn" @@ -42,9 +42,9 @@ export const CopyButton = ({ message, ...props }: CopyButtonProps) => { return ( ) diff --git a/src/components/EthPriceCard.tsx b/src/components/EthPriceCard.tsx index 394899dd7c9..661bb595efc 100644 --- a/src/components/EthPriceCard.tsx +++ b/src/components/EthPriceCard.tsx @@ -1,7 +1,7 @@ "use client" import { useEffect, useState } from "react" -import { Info } from "lucide-react" +import { ArrowUpRight, Info } from "lucide-react" import { useLocale } from "next-intl" import type { LoadingState } from "@/lib/types" @@ -37,7 +37,7 @@ const EthPriceCard = ({ const [state, setState] = useState>({ loading: true, }) - const { isRtl } = useRtlFlip() + const { twFlipForRtl } = useRtlFlip() useEffect(() => { const fetchData = async () => { @@ -117,9 +117,9 @@ const EthPriceCard = ({ {...props} >

- {t("eth-current-price")} + {t("eth-current-price")}  - +

@@ -140,18 +140,12 @@ const EthPriceCard = ({ isNegativeChange ? "text-error" : "text-success" )} > - - {change} - + {change} + {isNegativeChange ? ( + + ) : ( + + )}
({t("last-24-hrs")}) diff --git a/src/components/Homepage/CodeExamples.tsx b/src/components/Homepage/CodeExamples.tsx index 5768f272a5e..36cab10893f 100644 --- a/src/components/Homepage/CodeExamples.tsx +++ b/src/components/Homepage/CodeExamples.tsx @@ -1,7 +1,7 @@ "use client" import { Suspense, useState } from "react" -import { Check, Copy } from "lucide-react" +import { Clipboard, ClipboardCheck } from "lucide-react" import { useLocale } from "next-intl" import type { CodeExample } from "@/lib/interfaces" @@ -93,9 +93,11 @@ const CodeExamples = ({ title, codeExamples }: CodeExamplesProps) => { - {(hasCopied) => (hasCopied ? : )} + {(hasCopied) => + hasCopied ? : + }
diff --git a/src/components/Layer2NetworksTable/NetworksSubComponent.tsx b/src/components/Layer2NetworksTable/NetworksSubComponent.tsx index 2696506b421..38a1e1bf0b0 100644 --- a/src/components/Layer2NetworksTable/NetworksSubComponent.tsx +++ b/src/components/Layer2NetworksTable/NetworksSubComponent.tsx @@ -38,7 +38,7 @@ const NetworkSubComponent = ({ network }: NetworkSubComponentProps) => {

- {t("page-layer-2-networks-age")}{" "} + {t("page-layer-2-networks-age")}  @@ -84,7 +84,7 @@ const NetworkSubComponent = ({ network }: NetworkSubComponentProps) => {

- {t("page-layer-2-networks-wallet-support")}{" "} + {t("page-layer-2-networks-wallet-support")}  @@ -119,7 +119,7 @@ const NetworkSubComponent = ({ network }: NetworkSubComponentProps) => {

- {t("page-layer-2-networks-active-address")}{" "} + {t("page-layer-2-networks-active-address")}  @@ -157,7 +157,7 @@ const NetworkSubComponent = ({ network }: NetworkSubComponentProps) => {

- {t("page-layer-2-networks-fee-token")}{" "} + {t("page-layer-2-networks-fee-token")}  @@ -182,7 +182,7 @@ const NetworkSubComponent = ({ network }: NetworkSubComponentProps) => {

- {t("page-layer-2-networks-network-usage")}{" "} + {t("page-layer-2-networks-network-usage")}  diff --git a/src/components/Leaderboard.tsx b/src/components/Leaderboard.tsx index 046dcd50be5..8601e84c718 100644 --- a/src/components/Leaderboard.tsx +++ b/src/components/Leaderboard.tsx @@ -1,7 +1,10 @@ +import { ExternalLink } from "lucide-react" import { VisuallyHidden } from "@radix-ui/react-visually-hidden" import Emoji from "@/components/Emoji" +import { cn } from "@/lib/utils/cn" + import { GITHUB_URL } from "@/lib/constants" import { Avatar } from "./ui/avatar" @@ -83,9 +86,7 @@ const Leaderboard = ({ content, limit = 100 }: LeaderboardProps) => {

{emoji && } - + ) diff --git a/src/components/ListenToPlayer/PlayerWidget/index.tsx b/src/components/ListenToPlayer/PlayerWidget/index.tsx index 623799ffa4a..565e32b4776 100644 --- a/src/components/ListenToPlayer/PlayerWidget/index.tsx +++ b/src/components/ListenToPlayer/PlayerWidget/index.tsx @@ -1,14 +1,15 @@ import { useCallback, useEffect, useRef, useState } from "react" -import { X } from "lucide-react" - import { - ArrowIcon, - AutoplayIcon, - CollapseIcon, - ExpandIcon, - PauseCircleIcon, - PlayCircleIcon, -} from "@/components/icons/listen-to" + CirclePause, + CirclePlay, + Maximize2, + Minimize2, + SkipBack, + SkipForward, + X, +} from "lucide-react" + +import AutoplayIcon from "@/components/icons/listen-to/autoplay.svg" import Tooltip from "@/components/Tooltip" import { cn } from "@/lib/utils/cn" @@ -159,7 +160,7 @@ const PlayerWidget = ({ }) }} > - +
@@ -228,17 +229,21 @@ const PlayerWidget = ({ title="Previous" aria-label={"Previous"} > - + @@ -253,7 +258,7 @@ const PlayerWidget = ({ title="Next" aria-label={"Next"} > - +
@@ -311,7 +320,7 @@ const PlayerWidget = ({ }) }} > - + @@ -324,7 +333,7 @@ const PlayerWidget = ({ handleCloseWidget() }} > - +
diff --git a/src/components/ListenToPlayer/TopOfPagePlayer/index.tsx b/src/components/ListenToPlayer/TopOfPagePlayer/index.tsx index 11588393e77..0ddcda19aae 100644 --- a/src/components/ListenToPlayer/TopOfPagePlayer/index.tsx +++ b/src/components/ListenToPlayer/TopOfPagePlayer/index.tsx @@ -1,4 +1,5 @@ -import { PauseCircleIcon, PlayCircleIcon } from "@/components/icons/listen-to" +import { CirclePause, CirclePlay } from "lucide-react" + import { Button } from "@/components/ui/buttons/Button" import { trackCustomEvent } from "@/lib/utils/matomo" @@ -36,12 +37,12 @@ const TopOfPagePlayer = ({
{startedPlaying ? ( isPlaying ? ( - + ) : ( - + ) ) : ( - + )}
{startedPlaying ? ( diff --git a/src/components/Nav/Client/index.tsx b/src/components/Nav/Client/index.tsx index 04f34a7bd2d..523ac333e22 100644 --- a/src/components/Nav/Client/index.tsx +++ b/src/components/Nav/Client/index.tsx @@ -1,10 +1,10 @@ "use client" import { useRef } from "react" +import { Languages } from "lucide-react" import dynamic from "next/dynamic" import { useLocale } from "next-intl" -import Translate from "@/components/icons/translate.svg" import SearchButton from "@/components/Search/SearchButton" import SearchInputButton from "@/components/Search/SearchInputButton" import { Skeleton } from "@/components/ui/skeleton" @@ -146,7 +146,8 @@ const ClientSideNav = () => { variant="ghost" className="animate-fade-in gap-0 px-2 text-body transition-transform duration-500 active:bg-primary-low-contrast active:text-primary-hover data-[state='open']:bg-primary-low-contrast data-[state='open']:text-primary-hover max-md:hidden xl:px-3 [&_svg]:transition-transform [&_svg]:duration-500 [&_svg]:hover:rotate-12" > - + +   {t("languages")}  {locale!.toUpperCase()} diff --git a/src/components/Nav/Mobile/ExpandIcon.tsx b/src/components/Nav/Mobile/ExpandIcon.tsx index 86600ce81ae..bceaa6f343f 100644 --- a/src/components/Nav/Mobile/ExpandIcon.tsx +++ b/src/components/Nav/Mobile/ExpandIcon.tsx @@ -1,34 +1,14 @@ -import { motion } from "framer-motion" - -const expandedPathVariants = { - closed: { - d: "M12 7.875V17.125", - transition: { duration: 0.1 }, - }, - open: { - d: "M12 12V12", - transition: { duration: 0.1 }, - }, -} +import { Minus, Plus } from "lucide-react" type ExpandIconProps = { isOpen: boolean } -const ExpandIcon = ({ isOpen }: ExpandIconProps) => ( - - - - -) +const ExpandIcon = ({ isOpen }: ExpandIconProps) => + isOpen ? ( + + ) : ( + + ) export default ExpandIcon diff --git a/src/components/Nav/Mobile/MenuFooter.tsx b/src/components/Nav/Mobile/MenuFooter.tsx index 5a034d78da1..09eebc7717e 100644 --- a/src/components/Nav/Mobile/MenuFooter.tsx +++ b/src/components/Nav/Mobile/MenuFooter.tsx @@ -1,6 +1,5 @@ -import { Moon, Search, Sun } from "lucide-react" +import { Languages, Moon, Search, Sun } from "lucide-react" -import Translate from "@/components/icons/translate.svg" import LanguagePicker from "@/components/LanguagePicker" import { MOBILE_LANGUAGE_BUTTON_NAME } from "@/lib/constants" @@ -44,7 +43,7 @@ const MenuFooter = ({ - + {t("languages")} diff --git a/src/components/ProductTable/MobileFilters.tsx b/src/components/ProductTable/MobileFilters.tsx index da496ed8fd3..c6a1f5276c9 100644 --- a/src/components/ProductTable/MobileFilters.tsx +++ b/src/components/ProductTable/MobileFilters.tsx @@ -1,9 +1,8 @@ import React from "react" -import { RotateCcw, X } from "lucide-react" +import { ListFilter, RotateCcw, X } from "lucide-react" import { FilterOption, TPresetFilters } from "@/lib/types" -import { FilterBurgerIcon } from "@/components/icons/wallets" import Filters from "@/components/ProductTable/Filters" import PresetFilters from "@/components/ProductTable/PresetFilters" import { @@ -71,7 +70,9 @@ const MobileFilters = ({

{t("table-filters")}

{` ${activeFiltersCount} ${t("table-active")}`}

- +
+ +
diff --git a/src/components/RadialChart/index.tsx b/src/components/RadialChart/index.tsx index 2def64b02c8..53a4d782050 100644 --- a/src/components/RadialChart/index.tsx +++ b/src/components/RadialChart/index.tsx @@ -107,23 +107,26 @@ const RadialChart = ({
{label} {sourceName && sourceUrl && ( - -

- {t("data-provided-by")}{" "} - {sourceName} -

- {lastUpdated && ( -

- {t("last-updated")}: {lastUpdatedDisplay} + <> +   + +

+ {t("data-provided-by")}{" "} + {sourceName}

- )} - - } - > - -
+ {lastUpdated && ( +

+ {t("last-updated")}: {lastUpdatedDisplay} +

+ )} + + } + > + + + )}
diff --git a/src/components/Simulator/WalletHome/AddressPill.tsx b/src/components/Simulator/WalletHome/AddressPill.tsx index 3bcd964d924..2e378672a5e 100644 --- a/src/components/Simulator/WalletHome/AddressPill.tsx +++ b/src/components/Simulator/WalletHome/AddressPill.tsx @@ -1,4 +1,4 @@ -import { Copy } from "lucide-react" +import { Clipboard } from "lucide-react" import { Flex, type FlexProps } from "@/components/ui/flex" @@ -17,7 +17,7 @@ export const AddressPill = ({ ...btnProps }: AddressPillProps) => ( {...btnProps} >

{FAKE_DEMO_ADDRESS}

- + ) diff --git a/src/components/StablecoinsTable.tsx b/src/components/StablecoinsTable.tsx index f47b23f8e11..06927f62d37 100644 --- a/src/components/StablecoinsTable.tsx +++ b/src/components/StablecoinsTable.tsx @@ -1,7 +1,7 @@ "use client" import { Suspense, useState } from "react" -import { Filter } from "lucide-react" +import { ExternalLink, ListFilter } from "lucide-react" import type { StablecoinType } from "@/lib/types" @@ -188,7 +188,7 @@ const StablecoinsTable = ({ content, hasError }: StablecoinsTableProps) => { ({activeTypeCount}) )} - + {typeFilters.map((filter) => ( @@ -240,7 +240,7 @@ const StablecoinsTable = ({ content, hasError }: StablecoinsTableProps) => { {activePegCount !== totalPegCount && ( ({activePegCount}) )} - + {pegFilters.map((filter) => ( @@ -298,8 +298,10 @@ const StablecoinsTable = ({ content, hasError }: StablecoinsTableProps) => { {column} ))} {content && content[0]?.url && ( - - + + )} diff --git a/src/components/icons/listen-to/arrow.svg b/src/components/icons/listen-to/arrow.svg deleted file mode 100644 index 1ce1fd8c95b..00000000000 --- a/src/components/icons/listen-to/arrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/icons/listen-to/autoplay.svg b/src/components/icons/listen-to/autoplay.svg index 6d004dfda31..a8e56ea8458 100644 --- a/src/components/icons/listen-to/autoplay.svg +++ b/src/components/icons/listen-to/autoplay.svg @@ -1,3 +1,6 @@ - - - \ No newline at end of file + + + + + + diff --git a/src/components/icons/listen-to/collapse.svg b/src/components/icons/listen-to/collapse.svg deleted file mode 100644 index e9a523dbb50..00000000000 --- a/src/components/icons/listen-to/collapse.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/icons/listen-to/expand.svg b/src/components/icons/listen-to/expand.svg deleted file mode 100644 index 709ed75ae2a..00000000000 --- a/src/components/icons/listen-to/expand.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/icons/listen-to/index.ts b/src/components/icons/listen-to/index.ts deleted file mode 100644 index eb3a40bae12..00000000000 --- a/src/components/icons/listen-to/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import ArrowIcon from "./arrow.svg" -import AutoplayIcon from "./autoplay.svg" -import CollapseIcon from "./collapse.svg" -import ExpandIcon from "./expand.svg" -import PauseCircleIcon from "./pause-circle.svg" -import PlayCircleIcon from "./play-circle.svg" - -export { - ArrowIcon, - AutoplayIcon, - CollapseIcon, - ExpandIcon, - PauseCircleIcon, - PlayCircleIcon, -} diff --git a/src/components/icons/listen-to/pause-circle.svg b/src/components/icons/listen-to/pause-circle.svg deleted file mode 100644 index 37a8319c0e2..00000000000 --- a/src/components/icons/listen-to/pause-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/icons/listen-to/play-circle.svg b/src/components/icons/listen-to/play-circle.svg deleted file mode 100644 index aa7aca0b606..00000000000 --- a/src/components/icons/listen-to/play-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/components/icons/translate.svg b/src/components/icons/translate.svg deleted file mode 100644 index 16e6bd24239..00000000000 --- a/src/components/icons/translate.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/components/ui/Link.tsx b/src/components/ui/Link.tsx index b28044e882c..caccf62ae15 100644 --- a/src/components/ui/Link.tsx +++ b/src/components/ui/Link.tsx @@ -106,7 +106,7 @@ export const BaseLink = forwardRef(function Link( {isMailto ? ( {!hideArrow && ( - + )} {children} @@ -118,8 +118,9 @@ export const BaseLink = forwardRef(function Link( {!hideArrow && !isMailto && ( diff --git a/src/components/ui/buttons/Button.tsx b/src/components/ui/buttons/Button.tsx index a9faf4289b0..774e0703a49 100644 --- a/src/components/ui/buttons/Button.tsx +++ b/src/components/ui/buttons/Button.tsx @@ -166,7 +166,10 @@ const ButtonLink = React.forwardRef( >