diff --git a/package.json b/package.json index dba17923e31..251b03de0f7 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cmdk": "^1.0.0", - "embla-carousel-react": "^7.0.0", "ethereum-blockies-base64": "^1.0.2", "framer-motion": "^10.13.0", "gray-matter": "^4.0.3", diff --git a/public/content/dao/index.md b/public/content/dao/index.md index 8d2f224a06a..6fc2f53630a 100644 --- a/public/content/dao/index.md +++ b/public/content/dao/index.md @@ -1,5 +1,5 @@ --- -title: What is a DAO? | Decentralized Autonomous Organizations +title: Decentralized autonomous organizations (DAOs) description: An overview of DAOs on Ethereum lang: en template: use-cases diff --git a/public/content/defi/index.md b/public/content/defi/index.md index dd88a121178..50c42acc22f 100644 --- a/public/content/defi/index.md +++ b/public/content/defi/index.md @@ -1,5 +1,5 @@ --- -title: What is DeFi? | Benefits and Use of Decentralised Finance +title: Decentralized finance (DeFi) description: An overview of DeFi on Ethereum lang: en template: use-cases diff --git a/public/content/developers/docs/gas/index.md b/public/content/developers/docs/gas/index.md index 36b1f4a7776..2b6cedb16c8 100644 --- a/public/content/developers/docs/gas/index.md +++ b/public/content/developers/docs/gas/index.md @@ -1,5 +1,5 @@ --- -title: "Ethereum gas and fees: technical overview" +title: Gas and fees description: lang: en --- diff --git a/public/content/developers/docs/mev/index.md b/public/content/developers/docs/mev/index.md index b368dfc1b19..68483f19370 100644 --- a/public/content/developers/docs/mev/index.md +++ b/public/content/developers/docs/mev/index.md @@ -181,6 +181,7 @@ Below is an overview of how the Builder API works: 5. A validator using the Builder API is still expected to build a block locally in case the block builder fails to respond promptly, so they don't miss out on block proposal rewards. However, validator cannot create another block using either the now-revealed transactions or another set, as it would amount to _equivocation_ (signing two blocks within the same slot), which is a slashable offense. An example implementation of the Builder API is [MEV Boost](https://github.com/flashbots/mev-boost), an improvement on the [Flashbots auction mechanism](https://docs.flashbots.net/Flashbots-auction/overview/) designed to curb the negative externalities of MEV on Ethereum. Flashbots auction allows validators in proof-of-stake to outsource the work of building profitable blocks to specialized parties called **searchers**. +![A diagram showing the MEV flow in detail](./mev.png) Searchers look for lucrative MEV opportunities and send transaction bundles to block proposers along with a [sealed-price bid](https://en.wikipedia.org/wiki/First-price_sealed-bid_auction) for inclusion in the block. The validator running mev-geth, a forked version of the go-ethereum (Geth) client only has to choose the bundle with the most profit and include it as part of the new block. To protect block proposers (validators) from spam and invalid transactions, transaction bundles pass through **relayers** for validation before getting to the proposer. diff --git a/public/content/developers/docs/mev/mev.png b/public/content/developers/docs/mev/mev.png new file mode 100644 index 00000000000..824f573183d Binary files /dev/null and b/public/content/developers/docs/mev/mev.png differ diff --git a/public/content/guides/how-to-use-a-wallet/index.md b/public/content/guides/how-to-use-a-wallet/index.md index 484efefdef8..600f2562cc9 100644 --- a/public/content/guides/how-to-use-a-wallet/index.md +++ b/public/content/guides/how-to-use-a-wallet/index.md @@ -1,5 +1,5 @@ --- -title: How to use Ethereum Wallets | Step by Step +title: How to use a wallet description: A guide explaining how to send, receive tokens and connect to web3 projects. lang: en --- diff --git a/public/content/nft/index.md b/public/content/nft/index.md index 4d682f21242..e24cf4646db 100644 --- a/public/content/nft/index.md +++ b/public/content/nft/index.md @@ -1,5 +1,5 @@ --- -title: What are NFTs? | Benefits and use +title: Non-fungible tokens (NFT) description: An overview of NFTs on Ethereum lang: en template: use-cases diff --git a/public/content/smart-contracts/index.md b/public/content/smart-contracts/index.md index e1aefbec796..64bf7d73a62 100644 --- a/public/content/smart-contracts/index.md +++ b/public/content/smart-contracts/index.md @@ -1,5 +1,5 @@ --- -title: "Smart contracts: What are they and benefits" +title: Smart contracts description: A non-technical introduction to smart contracts lang: en --- diff --git a/src/@chakra-ui/components/components.utils.ts b/src/@chakra-ui/components/components.utils.ts index 3c389c5d5ab..444c0a24bfd 100644 --- a/src/@chakra-ui/components/components.utils.ts +++ b/src/@chakra-ui/components/components.utils.ts @@ -9,7 +9,6 @@ const { Checkbox: checkboxDefaultTheme, CloseButton: closeButtonDefaultTheme, Code: codeDefaultTheme, - Divider: dividerDefaultTheme, Drawer: drawerDefaultTheme, Form: formDefaultTheme, FormLabel: formLabelDefaultTheme, @@ -37,7 +36,6 @@ export { checkboxDefaultTheme, closeButtonDefaultTheme, codeDefaultTheme, - dividerDefaultTheme, drawerDefaultTheme, formDefaultTheme, formLabelDefaultTheme, diff --git a/src/@chakra-ui/components/index.ts b/src/@chakra-ui/components/index.ts index 1a1b20cefcf..fd0655c9534 100644 --- a/src/@chakra-ui/components/index.ts +++ b/src/@chakra-ui/components/index.ts @@ -8,7 +8,6 @@ import { Checkbox } from "./Checkbox" import { closeButtonDefaultTheme, codeDefaultTheme, - dividerDefaultTheme, drawerDefaultTheme, formDefaultTheme, formLabelDefaultTheme, @@ -39,7 +38,6 @@ export default { Checkbox, CloseButton: closeButtonDefaultTheme, Code: codeDefaultTheme, - Divider: dividerDefaultTheme, Drawer: drawerDefaultTheme, Form: formDefaultTheme, FormLabel: formLabelDefaultTheme, diff --git a/src/components/BigNumber/index.tsx b/src/components/BigNumber/index.tsx index d276611edd4..5abd8d9bafc 100644 --- a/src/components/BigNumber/index.tsx +++ b/src/components/BigNumber/index.tsx @@ -43,7 +43,7 @@ const BigNumber = ({ > {value ? ( <> -
{value}
+
{value}
{children} {sourceName && sourceUrl && ( diff --git a/src/components/MdComponents/index.tsx b/src/components/MdComponents/index.tsx index 09ff6d9638b..e9ec3c529a3 100644 --- a/src/components/MdComponents/index.tsx +++ b/src/components/MdComponents/index.tsx @@ -27,6 +27,7 @@ import LocaleDateTime from "../LocaleDateTime" import MainArticle from "../MainArticle" import { StandaloneQuizWidget } from "../Quiz/QuizWidget" import { ButtonLink } from "../ui/buttons/Button" +import { Divider } from "../ui/divider" import { Flex } from "../ui/flex" import { ListItem, OrderedList, UnorderedList } from "../ui/list" import { mdxTableComponents } from "../ui/Table" @@ -180,10 +181,6 @@ export const MobileButtonDropdown = ({ ) -export const Divider = () => ( -
-) - // All custom React components export const reactComponents = { Badge, diff --git a/src/components/Slider/Slider.stories.tsx b/src/components/Slider/Slider.stories.tsx deleted file mode 100644 index e140ef6a12e..00000000000 --- a/src/components/Slider/Slider.stories.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import React from "react" -import { - Heading, - HeadingProps, - Stack, - StackProps, - Text, -} from "@chakra-ui/react" -import { Meta, StoryObj } from "@storybook/react" - -import SliderComponent, { EmblaSlide } from "." - -const meta = { - title: "Slider", - component: SliderComponent, - parameters: { - // https://storybook.js.org/docs/react/essentials/actions#action-event-handlers - actions: { - handles: ["click"], - }, - }, -} satisfies Meta - -export default meta - -const H3 = (props: HeadingProps) => - -const Description = (props: StackProps) => - -const ComponentSlides = () => ( - <> - -

Cheaper and Faster Crossborder Payments

- - - Stable coins are a novel type of cryptocurrency that relies on - a more stable asset as the basis for its value. Most of them are - linked to the United States dollar and therefore maintain the value of - that currency. These allow for a very cheap and stable global payment - system. Many current stablecoins are built on the Ethereum network. - - - Ethereum and stablecoins simplify the process of sending money - overseas. It often takes only few minutes to move funds across the - globe, as opposed to the several business days or even weeks that it - may take your average bank, and for a fraction of the price. - Additionally, there is no extra fee for making a high value - transaction, and there are zero restrictions on where or why you are - sending your money. - - -
- -

The Quickest Help in Times of Crisis

- - - If you are lucky enough to have multiple banking options through - trusted institutions where you live, you may take for granted the - financial freedom, security and stability that they offer. But for - many people around the world facing political repression or economic - hardship, financial institutions may not provide the protection or - services they need. - - - When war, economic catastrophes or crackdowns on civil liberties - struck the residents of{" "} - - Venezuela - - ,{" "} - - Cuba - - ,{" "} - - Afghanistan - - ,{" "} - - Nigeria - - ,{" "} - - Belarus - - , and{" "} - - Ukraine - - , cryptocurrencies constituted the quickest and often the only option - to retain financial agency. - - 1 - {" "} - As seen in these examples, cryptocurrencies like Ethereum can provide - unfettered access to the global economy when people are cut off from - the outside world. Additionally, stablecoins offer a store of value - when local currencies are collapsing due to superinflation. - - -
- -) - -export const Slider: StoryObj = { - args: { - children: , - }, -} diff --git a/src/components/Slider/index.tsx b/src/components/Slider/index.tsx deleted file mode 100644 index ace3afd81a9..00000000000 --- a/src/components/Slider/index.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import React, { useCallback, useEffect, useState } from "react" -import useEmblaCarousel from "embla-carousel-react" -import { MdChevronLeft, MdChevronRight } from "react-icons/md" -import { Box, Center, Flex, IconButton, Stack } from "@chakra-ui/react" - -import { ChildOnlyProp } from "@/lib/types" - -import { useRtlFlip } from "@/hooks/useRtlFlip" - -export type SliderProps = { - children?: React.ReactNode - onSlideChange?: (slideIndex: number) => void -} - -const Slider = ({ children, onSlideChange }: SliderProps) => { - const { flipForRtl, direction } = useRtlFlip() - const [emblaRef, embla] = useEmblaCarousel({ direction }) - const [prevBtnEnabled, setPrevBtnEnabled] = useState(false) - const [nextBtnEnabled, setNextBtnEnabled] = useState(false) - const [selectedIndex, setSelectedIndex] = useState(0) - const [scrollSnaps, setScrollSnaps] = useState>([]) - - const scrollPrev = useCallback(() => embla && embla.scrollPrev(), [embla]) - const scrollNext = useCallback(() => embla && embla.scrollNext(), [embla]) - const scrollTo = useCallback( - (index: number) => { - if (embla) { - embla.scrollTo(index) - } - - if (onSlideChange) { - onSlideChange(index) - } - }, - [embla, onSlideChange] - ) - - const onSelect = useCallback(() => { - if (!embla) return - setSelectedIndex(embla.selectedScrollSnap()) - setPrevBtnEnabled(embla.canScrollPrev()) - setNextBtnEnabled(embla.canScrollNext()) - }, [embla, setSelectedIndex]) - - useEffect(() => { - if (!embla) return - onSelect() - setScrollSnaps(embla.scrollSnapList()) - embla.on("select", () => { - const index = embla.selectedScrollSnap() - if (onSlideChange) { - onSlideChange(index) - } - onSelect() - }) - }, [embla, setScrollSnaps, onSelect, onSlideChange]) - - return ( - - - {children} - - - } - isRound - me="0.8rem" - _hover={{ boxShadow: "none" }} - _focus={{ boxShadow: "none" }} - bg={prevBtnEnabled ? "sliderBtnBg" : "sliderBtnBgDisabled"} - size="sm" - color={prevBtnEnabled ? "sliderBtnColor" : "sliderBtnColorDisabled"} - transform={flipForRtl} - /> - } - isRound - _hover={{ boxShadow: "none" }} - _focus={{ boxShadow: "none" }} - bg={nextBtnEnabled ? "sliderBtnBg" : "sliderBtnBgDisabled"} - size="sm" - color={nextBtnEnabled ? "sliderBtnColor" : "sliderBtnColorDisabled"} - transform={flipForRtl} - /> - -
- {scrollSnaps.map((_, index) => ( - scrollTo(index)} - sx={{ - me: "1rem", - "&:last-child": { - me: 0, - }, - }} - /> - ))} -
-
- ) -} - -export const EmblaSlide = ({ children }: ChildOnlyProp) => { - return ( - - {children} - - ) -} - -export default Slider diff --git a/src/components/Swiper/index.tsx b/src/components/Swiper/index.tsx index d235a381a03..26344808770 100644 --- a/src/components/Swiper/index.tsx +++ b/src/components/Swiper/index.tsx @@ -1,7 +1,10 @@ import { useTranslation } from "next-i18next" import { EffectCards, Keyboard, Navigation, Pagination } from "swiper/modules" -import { Swiper as SwiperParent, SwiperSlide } from "swiper/react" -import type { SwiperOptions } from "swiper/types" +import { + Swiper as SwiperParent, + type SwiperProps as SwiperParentProps, + SwiperSlide, +} from "swiper/react" import { ChevronNext, ChevronPrev } from "@/components/Chevron" @@ -12,23 +15,27 @@ import "swiper/css/navigation" import "swiper/css/pagination" import "swiper/css/effect-cards" -type SwiperProps = { +type SwiperProps = SwiperParentProps & { children: React.ReactNode[] - options?: SwiperOptions - className?: string - swiperClass?: string + /** + * Additional class names for the container element. + */ + containerClassName?: string + /** + * Additional class names for the slider element. + */ sliderClass?: string } + const Swiper = ({ children, - className, - swiperClass, + containerClassName, sliderClass, - options, + ...props }: SwiperProps) => { const { t } = useTranslation("common") return ( -
+
{children.map((child, index) => ( diff --git a/src/components/ui/divider.tsx b/src/components/ui/divider.tsx new file mode 100644 index 00000000000..1591284acc3 --- /dev/null +++ b/src/components/ui/divider.tsx @@ -0,0 +1,18 @@ +import { forwardRef } from "react" + +import { cn } from "@/lib/utils/cn" + +const Divider = forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) + +Divider.displayName = "Divider" + +export { Divider } diff --git a/src/data/community-events.json b/src/data/community-events.json index c8b933a7f9d..07d206301b8 100644 --- a/src/data/community-events.json +++ b/src/data/community-events.json @@ -546,7 +546,7 @@ "endDate": "2024-05-11", "href": "https://ethbratislava.com/", "location": "Bratislava, Slovakia", - "description": "Join the 1st #ETH hackathon & conference in Bratislava empowering local communities & sustainability on Ethereum. Follow us for more updates 🔜", + "description": "Join the 1st #ETH hackathon & conference in Bratislava empowering local communities & sustainability on Ethereum. Follow us for more updates 🔜", "imageUrl": "https://framerusercontent.com/images/wx8uSNTYpgWtsrSN5A2dkD0F4.png" }, { @@ -555,7 +555,7 @@ "endDate": "2024-08-26", "href": "https://ethtokyo.com", "location": "Tokyo, JPN", - "description": "ETHTokyo 2024 is a Ethereum hackathon & conference organized by Japanese Ethereum enthusiasts.", + "description": "ETHTokyo 2024 is a Ethereum hackathon & conference organized by Japanese Ethereum enthusiasts.", "imageUrl": "https://www.ethtokyo.com/images/thumbnail.jpg" }, { diff --git a/src/data/placeholders/content-developers-docs-mev-data.json b/src/data/placeholders/content-developers-docs-mev-data.json new file mode 100644 index 00000000000..5e778b21b7b --- /dev/null +++ b/src/data/placeholders/content-developers-docs-mev-data.json @@ -0,0 +1,10 @@ +{ + "/content/developers/docs/mev/gas.png": { + "hash": "5c7e3803", + "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAYAAAA7KqwyAAAACXBIWXMAABYlAAAWJQFJUiTwAAACLUlEQVR4nB1RT0xScQD+ZTUrBJct1zqWt1zNq21utlp/Lm2uFrO1eeyQFzYd49TheUlGQq949SQZryaWsyUrtZUMeAI+QXkP/BOKgQaGzo0QSCHe117H79u+f/sITdMNLMvWcRynpijqxM7OfmsuV7mfzRbbent7j5tMpvr+/v7TFstgI8uyZ44celwDnn4At9GKeFxFGIbREEKITqer5bgBdamE2UoFOKhgzuv1qoxG4ymappsoqrtRp+vS9PU9a0Dg9VcscKh4HK1ESacoqkavH1ApRoUC3LIMlEoITE5Oqu1D3UcVPiqhTQih438Dz8tOeKwcXK7DRAijJx7HdFTCp+/L+LyRRqcsy5fzeVwIBkvN09ObtRw3oU6nkdjagszYV8+Dfz4BgQWk0UvkZwaj+SKwlkT5dwHIZnFPSYxE8CoiApIEq1arrRMlmEQR7+8aEmp4nV1ln9MOt1tDYr7Mo0y0MLUd2xvLRHKuH/N/mln2Y11sBWvRZWAljiWbTTipzGxvP3eM56stQggzHj/WIzH0EAQGHQhYgYA9j4XhKuZsd5QG++ElPTZnkY+kHio4JuGFJMIphuSbooji4iKQSIAhEN6+gzQECMNlRD8Acw6tIgBvvo5vT9fB97UoeOsXVrPbKPr86EimsLe7CyQ3wJCUi7lY5t/cqAYdV6sz9muLY+azyiMjlhHV+Liv3mw2qwwGg9rv/3vF5yvf+jJ10DQv4kk4DJsQxu1/rPx2bveFpz8AAAAASUVORK5CYII=" + }, + "/content/developers/docs/mev/mev.png": { + "hash": "0f52b1bc", + "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAYAAADwdn+XAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfklEQVR4nE2QO2tUQQBGR4341ia/QVgtLLSyEBvBYsE/IKS0EsEoCcaYxsZSSC8YV+HaxSSCFimiIhjtRbFx9268c18z+5o7d7NHZiYGp/uY4cz5PhFF0TEhhDCGs1lmbJ7XWy6Ps527uJN37rhMEa9BBfmvC/0+MzBBSgqxvBydDIBJo6pAa7Y9IP8z7wEqvueyTTtvMZq0HS8opV4/W4F379kVwCH3QOtJo65hOOSL/7HszgWAnA0G3XWw2CS+0hsyu/UBPn6iEq1Wa7rZbB7XmnPeQAUDK2UwKDvzLu9que6zjC/JjFuDPvz4yfg/AxrWglJ8W3rKaZMkS2GD9kOeXzthS7nhopHyxtoGN1de8v3FKz47wMG9ERujEZQlX+8/4ZRJ0kcekLYXuCgOhwo1FN2rvhKbR2Fzah+QZZw3Jox4/TZHbLqzGAx+P3D3VS9745anJ/cAkTffByjF5fEYBoN6e3WV6apQjz1AJ4tEc2cmo8JXYPQPwBRw4C/JQGPb+/3YHgAAAABJRU5ErkJggg==" + } +} \ No newline at end of file diff --git a/src/intl/en/common.json b/src/intl/en/common.json index a4c3eb60e7c..59f5c3dfd15 100644 --- a/src/intl/en/common.json +++ b/src/intl/en/common.json @@ -203,7 +203,7 @@ "layer-2": "Layer 2", "learn": "Learn", "learn-by-coding": "Learn by coding", - "learn-hub": "Ethereum: A Comprehensive Learning Guide", + "learn-hub": "Learn Hub", "learn-menu": "Learn menu", "learn-more": "Learn more", "less": "Less", diff --git a/src/intl/en/page-gas.json b/src/intl/en/page-gas.json index 393fcf28af9..6074f92e531 100644 --- a/src/intl/en/page-gas.json +++ b/src/intl/en/page-gas.json @@ -1,5 +1,5 @@ { - "page-gas-meta-title": "Ethereum fees: what is gas and how to pay less?", + "page-gas-meta-title": "Gas fees on Ethereum: how do they work?", "page-gas-meta-description": "Learn about gas on Ethereum: how they work and how to pay less in gas fees", "page-gas-hero-title": "Gas fees", "page-gas-hero-header": "Network fees", diff --git a/src/intl/en/page-get-eth.json b/src/intl/en/page-get-eth.json index c3253865563..f096d79919e 100644 --- a/src/intl/en/page-get-eth.json +++ b/src/intl/en/page-get-eth.json @@ -46,7 +46,7 @@ "page-get-eth-hero-image-alt": "Get ETH hero image", "page-get-eth-keep-it-safe": "Keeping your ETH safe", "page-get-eth-meta-description": "How to buy ETH based on where you live and advice on how to look after it.", - "page-get-eth-meta-title": "How to buy Ethereum (ETH)", + "page-get-eth-meta-title": "How to get ETH", "page-get-eth-need-wallet": "You will need a wallet to use a DEX.", "page-get-eth-new-to-eth": "New to ETH? Here's an overview to get you started.", "page-get-eth-other-cryptos": "Buy with other crypto", diff --git a/src/intl/en/page-index.json b/src/intl/en/page-index.json index b3480453b46..60a23d4cf1e 100644 --- a/src/intl/en/page-index.json +++ b/src/intl/en/page-index.json @@ -118,4 +118,4 @@ "page-index-values-open-ethereum-label": "Open to all", "page-index-values-open-ethereum-content-0": "Ethereum is public to all. Anyone can see, use, and improve the code, making it better for everyone." } - \ No newline at end of file + diff --git a/src/intl/en/page-layer-2.json b/src/intl/en/page-layer-2.json index 83fcba856d3..f36d20571a3 100644 --- a/src/intl/en/page-layer-2.json +++ b/src/intl/en/page-layer-2.json @@ -4,7 +4,7 @@ "layer-2-optimism-note": "Fault proofs in development", "layer-2-base-note": "Fraud proof system is currently under development", "layer-2-metadata-description": "Introduction page to layer 2", - "layer-2-hero-title": "Intro to Ethereum Layer 2: benefits and uses", + "layer-2-hero-title": "Layer 2", "layer-2-hero-header": "Ethereum for everyone", "layer-2-hero-subtitle": "Scaling Ethereum for mass adoption.", "layer-2-hero-alt-text": "Illustration of transactions being rolled up on layer 2 and posted to Ethereum Mainnet", diff --git a/src/intl/en/page-run-a-node.json b/src/intl/en/page-run-a-node.json index 167d6f151b6..29b9ca73a80 100644 --- a/src/intl/en/page-run-a-node.json +++ b/src/intl/en/page-run-a-node.json @@ -110,7 +110,7 @@ "page-run-a-node-sovereignty-preview": "Think of running a node like the next step beyond getting your own Ethereum wallet.", "page-run-a-node-sovereignty-1": "An Ethereum wallet allows you to take full custody and control of your digital assets by holding the private keys to your addresses, but those keys don't tell you the current state of the blockchain, such as your wallet balance.", "page-run-a-node-sovereignty-2": "By default, Ethereum wallets typically reach out to a 3rd-party node, such as Infura or Alchemy, when looking up your balances. Running your own node allows you to have your own copy of the Ethereum blockchain.", - "page-run-a-node-title": "How to Run an Ethereum Node", + "page-run-a-node-title": "Run a node", "page-run-a-node-voice-your-choice-title": "Voice your choice", "page-run-a-node-voice-your-choice-preview": "Don't give up control in the event of a fork.", "page-run-a-node-voice-your-choice-1": "In the event of a chain fork, where two chains emerge with two different sets of rules, running your own node guarantees your ability to choose which set of rules you support. It's up to you to upgrade to new rules and support proposed changes, or not.", diff --git a/src/intl/en/page-stablecoins.json b/src/intl/en/page-stablecoins.json index d5d05470019..62f49d64e8e 100644 --- a/src/intl/en/page-stablecoins.json +++ b/src/intl/en/page-stablecoins.json @@ -130,7 +130,7 @@ "page-stablecoins-stablecoins-table-type-fiat-backed": "Fiat", "page-stablecoins-stablecoins-table-type-precious-metals-backed": "Precious metals", "page-stablecoins-table-error": "Couldn't load stablecoins. Try refreshing the page.", - "page-stablecoins-title": "Stablecoins explained: What are they for?", + "page-stablecoins-title": "Stablecoins", "page-stablecoins-top-coins": "Top stablecoins by market capitalisation", "page-stablecoins-top-coins-intro": "Market capitalisation is", "page-stablecoins-top-coins-intro-code": "the total number of tokens that exist multiplied by the value per token. This list is dynamic and the projects listed here are not necessarily endorsed by the ethereum.org team.", diff --git a/src/intl/en/page-staking.json b/src/intl/en/page-staking.json index 92fa1313f6a..ff4098cfea7 100644 --- a/src/intl/en/page-staking.json +++ b/src/intl/en/page-staking.json @@ -230,7 +230,7 @@ "page-staking-join-community": "Join the staker community", "page-staking-join-community-desc": "EthStaker is a community for everyone to discuss and learn about staking on Ethereum. Join tens of thousands of members from around the globe for advice, support, and to talk all things staking.", "page-staking-meta-description": "An overview of Ethereum staking: the risks, rewards, requirements, and where to do it.", - "page-staking-meta-title": "Ethereum staking: How does it work?", + "page-staking-meta-title": "Ethereum staking", "page-staking-withdrawals-important-notices": "Important notices", "page-staking-withdrawals-important-notices-desc": "Withdrawals are not yet available. Please read the Eth2 Merge and post-merge FAQ for more information.", "page-upgrades-merge-btn": "More on The Merge", diff --git a/src/intl/en/page-wallets-find-wallet.json b/src/intl/en/page-wallets-find-wallet.json index ad03050be07..8acbc755074 100644 --- a/src/intl/en/page-wallets-find-wallet.json +++ b/src/intl/en/page-wallets-find-wallet.json @@ -5,7 +5,7 @@ "page-find-wallet-description": "Wallets store and transact your ETH. You can choose from a variety of products that tailor to your needs.", "page-find-wallet-last-updated": "Last updated", "page-find-wallet-meta-description": "Find and compare Ethereum wallets based on the features you want.", - "page-find-wallet-meta-title": "List of Ethereum Wallets | ethereum.org", + "page-find-wallet-meta-title": "Find an Ethereum Wallet", "page-find-wallet-title": "Choose your wallet", "page-find-wallet-try-removing": "Try removing a feature or two", "page-stake-eth": "Stake ETH", diff --git a/src/intl/en/page-wallets.json b/src/intl/en/page-wallets.json index 22f38d267ff..ee5f6c7513f 100644 --- a/src/intl/en/page-wallets.json +++ b/src/intl/en/page-wallets.json @@ -28,7 +28,7 @@ "page-wallets-manage-funds": "An app for managing your funds", "page-wallets-manage-funds-desc": "Your wallet shows your balances, transaction history and gives you a way to send/receive funds. Some wallets may offer more.", "page-wallets-meta-description": "What you need to know to use Ethereum wallets.", - "page-wallets-meta-title": "Ethereum wallets: Buy, Store and Send crypto", + "page-wallets-meta-title": "Ethereum wallets", "page-wallets-mobile": "Mobile applications that make your funds accessible from anywhere", "page-wallets-more-on-dapps-btn": "More on dapps", "page-wallets-most-wallets": "Most wallet products will let you generate an Ethereum account. So you don't need one before you download a wallet.", diff --git a/src/intl/en/page-what-is-ethereum.json b/src/intl/en/page-what-is-ethereum.json index 242b73b9611..fa865caa999 100644 --- a/src/intl/en/page-what-is-ethereum.json +++ b/src/intl/en/page-what-is-ethereum.json @@ -20,7 +20,7 @@ "page-what-is-ethereum-internet-card-desc": "Anyone can interact with Ethereum network or build applications on it. This allows you to control your own assets and identity, instead of them being controlled by a few mega-corporations.", "page-what-is-ethereum-meet-comm": "Meet the community", "page-what-is-ethereum-meta-description": "Learn about Ethereum, what it does and how to try it for yourself.", - "page-what-is-ethereum-meta-title": "What is Ethereum? | Benefits and use", + "page-what-is-ethereum-meta-title": "What is Ethereum?", "page-what-is-ethereum-p2p-card": "A peer-to-peer network", "page-what-is-ethereum-p2p-card-desc": "Ethereum allows you to coordinate, make agreements or transfer digital assets directly with other people. You don't need to rely on intermediaries.", "page-what-is-ethereum-start-building-btn": "Start building", diff --git a/src/layouts/Docs.tsx b/src/layouts/Docs.tsx index 072c5cf9094..a6d7d1d591f 100644 --- a/src/layouts/Docs.tsx +++ b/src/layouts/Docs.tsx @@ -4,7 +4,6 @@ import { Badge, Box, type BoxProps, - Divider as ChakraDivider, Flex, type FlexProps, type ListProps, @@ -42,6 +41,7 @@ import SideNav from "@/components/SideNav" import SideNavMobile from "@/components/SideNavMobile" import TableOfContents from "@/components/TableOfContents" import Translation from "@/components/Translation" +import { Divider } from "@/components/ui/divider" import { mdxTableComponents } from "@/components/ui/Table" import YouTube from "@/components/YouTube" @@ -58,15 +58,6 @@ const Page = (props: ChildOnlyProp & Pick) => ( /> ) -const Divider = () => ( - -) - type ContentContainerProps = Pick const ContentContainer = (props: ContentContainerProps) => ( diff --git a/src/layouts/Tutorial.tsx b/src/layouts/Tutorial.tsx index 3b06b56038c..087f9fe9492 100644 --- a/src/layouts/Tutorial.tsx +++ b/src/layouts/Tutorial.tsx @@ -4,7 +4,6 @@ import { Badge, Box, type BoxProps, - Divider, Flex, Kbd, Text, @@ -35,6 +34,7 @@ import { import TableOfContents from "@/components/TableOfContents" import TooltipLink from "@/components/TooltipLink" import TutorialMetadata from "@/components/TutorialMetadata" +import { Divider } from "@/components/ui/divider" import { mdxTableComponents } from "@/components/ui/Table" import YouTube from "@/components/YouTube" @@ -93,16 +93,7 @@ const Heading4 = (props: HTMLAttributes) => ( /> ) -const StyledDivider = (props) => ( - -) +const StyledDivider = (props) => const Paragraph = (props: TextProps) => ( diff --git a/src/lib/utils/rss.ts b/src/lib/utils/rss.ts index 11de14e0f2c..88561e5d84a 100644 --- a/src/lib/utils/rss.ts +++ b/src/lib/utils/rss.ts @@ -20,6 +20,7 @@ export const postProcess = (rssItems: RSSItem[]) => ...item, imgSrc: "/images/vitalik-blog-banner.svg", link: item.link.replace(".ca", ".eth.limo"), + sourceUrl: item.sourceUrl.replace(".ca", ".eth.limo"), } case SOLIDITY_FEED: return { diff --git a/src/pages/bug-bounty.tsx b/src/pages/bug-bounty.tsx index ee040db7399..7faafd9e760 100644 --- a/src/pages/bug-bounty.tsx +++ b/src/pages/bug-bounty.tsx @@ -28,6 +28,7 @@ import OldHeading from "@/components/OldHeading" import Text from "@/components/OldText" import PageMetadata from "@/components/PageMetadata" import Translation from "@/components/Translation" +import { Divider } from "@/components/ui/divider" import { existsNamespace } from "@/lib/utils/existsNamespace" import { getLastDeployDate } from "@/lib/utils/getLastDeployDate" @@ -168,10 +169,6 @@ const FullLeaderboardContainer = (props: ChildOnlyProp) => ( const On = () => -const Divider = () => ( - -) - const Contact = (props: ChildOnlyProp) => ( { ) } -const Divider = () => { - return -} - const Page = ({ children }: ChildOnlyProp) => { return ( ( /> ) -const Divider = (props: DividerProps) => ( - -) - -const CenterDivider = () => - const Content = (props: ChildOnlyProp) => ( ) @@ -1826,7 +1812,7 @@ const DappsPage = () => { )} {/* General content for all categories */} - + {categories[selectedCategory].benefits && (

diff --git a/src/pages/eth.tsx b/src/pages/eth.tsx index a80d9dcbdae..50b245432b7 100644 --- a/src/pages/eth.tsx +++ b/src/pages/eth.tsx @@ -32,6 +32,7 @@ import Text from "@/components/OldText" import PageMetadata from "@/components/PageMetadata" import { StandaloneQuizWidget } from "@/components/Quiz/QuizWidget" import Translation from "@/components/Translation" +import { Divider } from "@/components/ui/divider" import { existsNamespace } from "@/lib/utils/existsNamespace" import { getLastDeployDate } from "@/lib/utils/getLastDeployDate" @@ -59,10 +60,6 @@ const Content = (props: ChildOnlyProp) => ( ) -const Divider = () => ( - -) - const GrayContainer = (props: ChildOnlyProp) => ( -const Divider = (props: BoxProps) => ( - -) - const Page = (props: FlexProps) => (
-

+

{title}

@@ -582,18 +582,16 @@ const HomePage = ({

{t("page-index:page-index-posts-subtitle")}

diff --git a/src/pages/roadmap/vision.tsx b/src/pages/roadmap/vision.tsx index eda8e6a8067..b0812af391d 100644 --- a/src/pages/roadmap/vision.tsx +++ b/src/pages/roadmap/vision.tsx @@ -5,7 +5,6 @@ import { serverSideTranslations } from "next-i18next/serverSideTranslations" import type { ComponentPropsWithRef } from "react" import { Box, - Divider, Flex, type FlexProps, Heading, @@ -32,6 +31,7 @@ import PageHero, { } from "@/components/PageHero" import PageMetadata from "@/components/PageMetadata" import Trilemma from "@/components/Trilemma" +import { Divider } from "@/components/ui/divider" import { existsNamespace } from "@/lib/utils/existsNamespace" import { getLastDeployDate } from "@/lib/utils/getLastDeployDate" @@ -50,15 +50,6 @@ const Page = (props: ChildOnlyProp) => ( /> ) -const PageDivider = () => ( - -) - const PageContent = (props: ChildOnlyProp) => ( ) @@ -169,7 +160,7 @@ const VisionPage = () => { description={t("page-roadmap-vision-meta-desc")} /> - + @@ -208,7 +199,7 @@ const VisionPage = () => { {t("page-roadmap-vision-upgrade-needs-desc-6")} - + {t("page-roadmap-vision-problems")} @@ -225,7 +216,7 @@ const VisionPage = () => { - + {t("page-roadmap-vision-understanding")} @@ -292,7 +283,7 @@ const VisionPage = () => { - + ) diff --git a/src/pages/run-a-node.tsx b/src/pages/run-a-node.tsx index 20e81e4fdb8..b0121f2614e 100644 --- a/src/pages/run-a-node.tsx +++ b/src/pages/run-a-node.tsx @@ -39,6 +39,7 @@ import PageHero from "@/components/PageHero" import PageMetadata from "@/components/PageMetadata" import { StandaloneQuizWidget as QuizWidget } from "@/components/Quiz/QuizWidget" import Translation from "@/components/Translation" +import { Divider } from "@/components/ui/divider" import { Stack, VStack } from "@/components/ui/flex" import { cn } from "@/lib/utils/cn" @@ -57,8 +58,6 @@ import ethereumInside from "@/public/images/run-a-node/ethereum-inside.png" import Terminal from "@/public/images/run-a-node/terminal.svg" import leslie from "@/public/images/upgrades/upgrade_rhino.png" -const Divider = () => - const GappedPage = (props: ChildOnlyProp) => ( { const Content = (props: BoxProps) => -const Divider = () => - const EditorsChoice = (props: FlexProps) => ( ( ) -const Divider = () => ( -
-) - const HeroStatsWrapper = (props: ChildOnlyProp) => ( ) diff --git a/src/pages/wallets/index.tsx b/src/pages/wallets/index.tsx index a3b4cdfd40b..7fa1b74635f 100644 --- a/src/pages/wallets/index.tsx +++ b/src/pages/wallets/index.tsx @@ -31,6 +31,7 @@ import { StandaloneQuizWidget } from "@/components/Quiz/QuizWidget" import { Simulator } from "@/components/Simulator" import { SIMULATOR_ID } from "@/components/Simulator/constants" import Translation from "@/components/Translation" +import { Divider } from "@/components/ui/divider" import { existsNamespace } from "@/lib/utils/existsNamespace" import { getLastDeployDate } from "@/lib/utils/getLastDeployDate" @@ -124,9 +125,6 @@ const ChecklistItem = (props: HorizontalCardProps) => ( {...props} /> ) -const Divider = (props: BoxProps) => ( - -) const CalloutCardContainer = (props: ChildOnlyProp) => ( @@ -494,6 +492,7 @@ const WalletsPage = () => { +

{t("page-wallets-explore")}

) => (
) -export const Width60 = (props: ChildOnlyProp) => ( -
+export const Width60 = ({ + className, + children, +}: React.HTMLAttributes) => ( +
{children}
) export const Width40 = (props: ChildOnlyProp) => ( @@ -164,6 +167,10 @@ const Image400 = ({ src }: Pick) => ( ) +const Slide = ({ children }: ChildOnlyProp) => ( +
{children}
+) + const cachedFetchTxCount = runOnlyOnce(fetchGrowThePie) type Props = BasePageProps & { @@ -393,57 +400,60 @@ const WhatIsEthereumPage = ({
- +

{t("page-what-is-ethereum-why-would-i-use-ethereum-title")}

- +

{t("page-what-is-ethereum-why-would-i-use-ethereum-1")}

{t("page-what-is-ethereum-why-would-i-use-ethereum-2")}

- { - trackCustomEvent({ - eventCategory: `What is Ethereum - Slider`, - eventAction: `Clicked`, - eventName: slides[index].eventName, - }) - }} - > - -

{t("page-what-is-ethereum-slide-1-title")}

- -

- -

-

{t("page-what-is-ethereum-slide-1-desc-2")}

-
-
- -

{t("page-what-is-ethereum-slide-2-title")}

- -

{t("page-what-is-ethereum-slide-2-desc-1")}

-

- -

-
-
- -

{t("page-what-is-ethereum-slide-3-title")}

- -

- -

-
-
- -

{t("page-what-is-ethereum-slide-4-title")}

- -

{t("page-what-is-ethereum-slide-4-desc-1")}

-

{t("page-what-is-ethereum-slide-4-desc-2")}

-
-
-
+
+ { + trackCustomEvent({ + eventCategory: `What is Ethereum - Slider`, + eventAction: `Clicked`, + eventName: slides[activeIndex].eventName, + }) + }} + > + +

{t("page-what-is-ethereum-slide-1-title")}

+
+

+ +

+

{t("page-what-is-ethereum-slide-1-desc-2")}

+
+
+ +

{t("page-what-is-ethereum-slide-2-title")}

+
+

{t("page-what-is-ethereum-slide-2-desc-1")}

+

+ +

+
+
+ +

{t("page-what-is-ethereum-slide-3-title")}

+
+

+ +

+
+
+ +

{t("page-what-is-ethereum-slide-4-title")}

+
+

{t("page-what-is-ethereum-slide-4-desc-1")}

+

{t("page-what-is-ethereum-slide-4-desc-2")}

+
+
+
+
diff --git a/yarn.lock b/yarn.lock index b45d34f296c..68cac5a2196 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8053,18 +8053,6 @@ elliptic@^6.5.3, elliptic@^6.5.5: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -embla-carousel-react@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-7.1.0.tgz#e716f4df7fd31f7ca3e59a3e011158167bc3c468" - integrity sha512-tbYRPRZSDNd2QLNqYDcArAakGIxtUbhS7tkP0dGXktXHGgcX+3ji3VrOUTOftBiujZrMV8kRxtrRUe/1soloIQ== - dependencies: - embla-carousel "7.1.0" - -embla-carousel@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-7.1.0.tgz#c770dd3ade9285a97f5e3b6bbf705bc35ec0f9b5" - integrity sha512-Bh8Pa8NWzgugLkf8sAGexQlBCNDFaej5BXiKgQdRJ1mUC9NWBrw9Z23YVPVGkguWoz5LMjZXXFVGCobl3UPt/Q== - emoji-regex@^10.3.0: version "10.3.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" @@ -12187,7 +12175,7 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -"prettier-fallback@npm:prettier@^3": +"prettier-fallback@npm:prettier@^3", prettier@^3.1.1: version "3.3.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== @@ -12202,11 +12190,6 @@ prettier@^2.0.5, prettier@^2.8.8: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -prettier@^3.1.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== - prettier@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"