From d51b16f8199fb4e30ef23574e56658068be823e0 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Sat, 9 May 2026 10:11:35 +0200 Subject: [PATCH 1/2] refactor(ui): ExpandableCard defaults - forceMount to true - space-y-[1lh] for Content children - refactor usage to remove redundancy - fix(i18n): extract hard-coded title string --- app/[locale]/bug-bounty/page.tsx | 18 +- app/[locale]/gas/_components/gas.tsx | 10 +- app/[locale]/layer-2/_components/layer-2.tsx | 36 ++-- app/[locale]/roadmap/_components/roadmap.tsx | 54 +++--- app/[locale]/staking/_components/staking.tsx | 39 ++-- app/[locale]/videos/[slug]/page.tsx | 6 +- src/components/ExpandableCard.tsx | 6 +- src/components/ListingMethodology/index.tsx | 19 +- src/components/NetworkMaturity.tsx | 185 +++++++++---------- src/components/ui/accordion.tsx | 3 +- src/intl/en/page-layer-2-networks.json | 1 + 11 files changed, 174 insertions(+), 203 deletions(-) diff --git a/app/[locale]/bug-bounty/page.tsx b/app/[locale]/bug-bounty/page.tsx index 09056a63b56..22605caed51 100644 --- a/app/[locale]/bug-bounty/page.tsx +++ b/app/[locale]/bug-bounty/page.tsx @@ -775,29 +775,29 @@ export default async function Page(props: { params: Promise }) { title={t("bug-bounty-faq-q2-title")} contentPreview={t("bug-bounty-faq-q2-contentPreview")} > - +

{t.rich("bug-bounty-faq-q2-content-1", { a: (chunks) => ( {chunks} ), })} - +

- +

{t.rich("bug-bounty-faq-q3-content-1", { strong: Strong, })} - +

- {t("bug-bounty-faq-q4-content-1")} +

{t("bug-bounty-faq-q4-content-1")}

@@ -805,20 +805,20 @@ export default async function Page(props: { params: Promise }) { title={t("bug-bounty-faq-q5-title")} contentPreview={t("bug-bounty-faq-q5-contentPreview")} > - {t("bug-bounty-faq-q5-content-1")} +

{t("bug-bounty-faq-q5-content-1")}

- {t("bug-bounty-faq-q6-content-1")} - {t("bug-bounty-faq-q6-content-2")} +

{t("bug-bounty-faq-q6-content-1")}

+

{t("bug-bounty-faq-q6-content-2")}

- {t("bug-bounty-faq-q7-content-1")} +

{t("bug-bounty-faq-q7-content-1")}

diff --git a/app/[locale]/gas/_components/gas.tsx b/app/[locale]/gas/_components/gas.tsx index 7ccf8f80a93..a2de06d8fc0 100644 --- a/app/[locale]/gas/_components/gas.tsx +++ b/app/[locale]/gas/_components/gas.tsx @@ -338,15 +338,15 @@ const GasPage = ({ {/* MaxWidth will be enforced by FAQ component once implemented */}
-

+

-

+

-

+

@@ -354,10 +354,10 @@ const GasPage = ({
-

+

-

{t("page-gas-faq-question-3-a-2")}

+

{t("page-gas-faq-question-3-a-2")}

diff --git a/app/[locale]/layer-2/_components/layer-2.tsx b/app/[locale]/layer-2/_components/layer-2.tsx index 68a9f50ff07..3a803cc290f 100644 --- a/app/[locale]/layer-2/_components/layer-2.tsx +++ b/app/[locale]/layer-2/_components/layer-2.tsx @@ -431,16 +431,14 @@ const Layer2Hub = ({ eventAction="expand" eventName="how do i know if a network is part of ethereum" > -
-

- {t("page-layer-2-faq-ExpandableCard-1-description-1")}{" "} - - {t("common:nav-ethereum-networks")} - - {t("page-layer-2-period")} -

-

{t("page-layer-2-faq-ExpandableCard-1-description-2")}

-
+

+ {t("page-layer-2-faq-ExpandableCard-1-description-1")}{" "} + + {t("common:nav-ethereum-networks")} + + {t("page-layer-2-period")} +

+

{t("page-layer-2-faq-ExpandableCard-1-description-2")}

-
-

- {t("page-layer-2-faq-ExpandableCard-2-description-1")}{" "} - - {t("page-layer-2-faq-ExpandableCard-2-link")} - - {t("page-layer-2-period")} -

-

{t("page-layer-2-faq-ExpandableCard-2-description-2")}

-
+

+ {t("page-layer-2-faq-ExpandableCard-2-description-1")}{" "} + + {t("page-layer-2-faq-ExpandableCard-2-link")} + + {t("page-layer-2-period")} +

+

{t("page-layer-2-faq-ExpandableCard-2-description-2")}

{ title={t("page-roadmap-faq-1-title")} className="mb-0" > -
-

- {t("page-roadmap-faq-1-p1")}{" "} - {t("page-roadmap-faq-1-p1-continued")} -

-

{t("page-roadmap-faq-1-p2")}

-
+

+ {t("page-roadmap-faq-1-p1")}{" "} + {t("page-roadmap-faq-1-p1-continued")} +

+

{t("page-roadmap-faq-1-p2")}

-
-

- {t("page-roadmap-faq-2-p1")}{" "} - {t("page-roadmap-faq-2-p1-strong")}{" "} - {t("page-roadmap-faq-2-p1-continued")} -

-

{t("page-roadmap-faq-2-p2")}

-
+

+ {t("page-roadmap-faq-2-p1")}{" "} + {t("page-roadmap-faq-2-p1-strong")}{" "} + {t("page-roadmap-faq-2-p1-continued")} +

+

{t("page-roadmap-faq-2-p2")}

-
-

- -

-
+

+ +

-
-

- -

-
+

+ +

diff --git a/app/[locale]/staking/_components/staking.tsx b/app/[locale]/staking/_components/staking.tsx index 6196ea39878..3dac8b0b32c 100644 --- a/app/[locale]/staking/_components/staking.tsx +++ b/app/[locale]/staking/_components/staking.tsx @@ -464,26 +464,19 @@ const StakingPage = async ({

{tocItems.faq.title}

- -

{t("page-staking-faq-4-answer-p1")}

-

{t("page-staking-faq-4-answer-p2")}

-

{t("page-staking-faq-4-answer-p3")}

- - {t("page-upgrades-merge-btn")} - -
+

{t("page-staking-faq-4-answer-p1")}

+

{t("page-staking-faq-4-answer-p2")}

+

{t("page-staking-faq-4-answer-p3")}

+ + {t("page-upgrades-merge-btn")} +
- -

{t("page-staking-faq-5-answer-p1")}

-

{t("page-staking-faq-5-answer-p2")}

- - {t("page-staking-faq-5-answer-link")} - -
+

{t("page-staking-faq-5-answer-p1")}

+

{t("page-staking-faq-5-answer-p2")}

+ + {t("page-staking-faq-5-answer-link")} +
@@ -492,12 +485,10 @@ const StakingPage = async ({ {t("page-staking-faq-2-answer")} - -

{t("page-staking-faq-3-answer-p1")}

-

- -

-
+

{t("page-staking-faq-3-answer-p1")}

+

+ +

diff --git a/app/[locale]/videos/[slug]/page.tsx b/app/[locale]/videos/[slug]/page.tsx index 329c32cce7b..1a0292b344b 100644 --- a/app/[locale]/videos/[slug]/page.tsx +++ b/app/[locale]/videos/[slug]/page.tsx @@ -94,11 +94,7 @@ const VideoLandingPage = async (props: {

{t("page-videos-view-transcript")}

- {/* forceMount keeps transcript in DOM for SEO crawlers */} - + {await renderSimpleMarkdown(transcriptMdx, { h1: htmlElements.h2, })} diff --git a/src/components/ExpandableCard.tsx b/src/components/ExpandableCard.tsx index 8b0c4659b38..d86d746ccfc 100644 --- a/src/components/ExpandableCard.tsx +++ b/src/components/ExpandableCard.tsx @@ -39,7 +39,7 @@ const ExpandableCard = ({ eventName = "", visible = false, className, - forceMount, + forceMount = true, }: ExpandableCardProps) => { const [isVisible, setIsVisible] = useState(visible) const { t } = useTranslation("common") @@ -104,7 +104,9 @@ const ExpandableCard = ({ "in-data-[state=closed]:hidden in-data-[state=closed]:h-0" )} > -
{children}
+
+ {children} +
diff --git a/src/components/ListingMethodology/index.tsx b/src/components/ListingMethodology/index.tsx index 76e9eaa4d28..5b959b5a07a 100644 --- a/src/components/ListingMethodology/index.tsx +++ b/src/components/ListingMethodology/index.tsx @@ -54,19 +54,16 @@ const ListingMethodology = async ({ -
- {children} + {children} - {footers && ( -
- {footers.map((footer) => ( -

{footer}

- ))} -
- )} -
+ {footers && ( +
+ {footers.map((footer) => ( +

{footer}

+ ))} +
+ )}
diff --git a/src/components/NetworkMaturity.tsx b/src/components/NetworkMaturity.tsx index a0202cfd755..33d0467fea2 100644 --- a/src/components/NetworkMaturity.tsx +++ b/src/components/NetworkMaturity.tsx @@ -20,105 +20,100 @@ const NetworkMaturity = () => { return (
- -
-
-

- {t("page-layer-2-network-maturity-component-1")}{" "} - - {t("page-layer-2-network-maturity-component-2")} - {" "} - ({t("page-layer-2-network-maturity-component-3")} - ),{" "} - - {t("page-layer-2-network-maturity-component-4")} - ,{" "} - {t("page-layer-2-network-maturity-component-5")}.{" "} - {t("page-layer-2-network-maturity-component-6")} -

-

{t("page-layer-2-network-maturity-component-7")}

-
+ +

+ {t("page-layer-2-network-maturity-component-1")}{" "} + + {t("page-layer-2-network-maturity-component-2")} + {" "} + ({t("page-layer-2-network-maturity-component-3")} + ), + {t("page-layer-2-network-maturity-component-4")} + ,{" "} + {t("page-layer-2-network-maturity-component-5")}.{" "} + {t("page-layer-2-network-maturity-component-6")} +

+

{t("page-layer-2-network-maturity-component-7")}

- - - - - {t("page-layer-2-network-maturity-component-8")} - - - {t("page-layer-2-network-maturity-component-9")} - - - - - - -
- - {t("page-layer-2-networks-robust-label")} -
-
- - {t("page-layer-2-network-maturity-component-10")} -
- {t("page-layer-2-network-maturity-component-11")} -
-
+
+ + + + {t("page-layer-2-network-maturity-component-8")} + + + {t("page-layer-2-network-maturity-component-9")} + + + + + + +
+ + {t("page-layer-2-networks-robust-label")} +
+
+ + {t("page-layer-2-network-maturity-component-10")} +
+ {t("page-layer-2-network-maturity-component-11")} +
+
- - -
- - {t("page-layer-2-networks-maturing-label")} -
-
- - {t("page-layer-2-network-maturity-component-12")} -
- {t("page-layer-2-network-maturity-component-13")} -
- {t("page-layer-2-network-maturity-component-14")} -
-
+ + +
+ + {t("page-layer-2-networks-maturing-label")} +
+
+ + {t("page-layer-2-network-maturity-component-12")} +
+ {t("page-layer-2-network-maturity-component-13")} +
+ {t("page-layer-2-network-maturity-component-14")} +
+
- - -
- - - {t("page-layer-2-networks-developing-label")} - -
-
- - {t("page-layer-2-network-maturity-component-15")} -
- {t("page-layer-2-network-maturity-component-16")} -
- {t("page-layer-2-network-maturity-component-13")} -
- {t("page-layer-2-network-maturity-component-14")} -
-
+ + +
+ + {t("page-layer-2-networks-developing-label")} +
+
+ + {t("page-layer-2-network-maturity-component-15")} +
+ {t("page-layer-2-network-maturity-component-16")} +
+ {t("page-layer-2-network-maturity-component-13")} +
+ {t("page-layer-2-network-maturity-component-14")} +
+
- - -
- - {t("page-layer-2-networks-emerging-label")} -
-
- - {t("page-layer-2-network-maturity-component-15")} -
- {t("page-layer-2-network-maturity-component-17")} -
- {t("page-layer-2-network-maturity-component-18")} -
-
-
-
-
+ + +
+ + {t("page-layer-2-networks-emerging-label")} +
+
+ + {t("page-layer-2-network-maturity-component-15")} +
+ {t("page-layer-2-network-maturity-component-17")} +
+ {t("page-layer-2-network-maturity-component-18")} +
+
+ +
) diff --git a/src/components/ui/accordion.tsx b/src/components/ui/accordion.tsx index 46c4fd8e557..a42e99d2693 100644 --- a/src/components/ui/accordion.tsx +++ b/src/components/ui/accordion.tsx @@ -46,9 +46,10 @@ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName const AccordionContent = React.forwardRef< React.ComponentRef, React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( +>(({ className, forceMount = true, children, ...props }, ref) => ( diff --git a/src/intl/en/page-layer-2-networks.json b/src/intl/en/page-layer-2-networks.json index 06c73943b9f..33df9fccaf6 100644 --- a/src/intl/en/page-layer-2-networks.json +++ b/src/intl/en/page-layer-2-networks.json @@ -64,6 +64,7 @@ "page-layer-2-networks-transaction-fee": "Transaction fee", "page-layer-2-networks-transaction-fee-description": "The average cost of transaction for transfers, swaps, minting and other activities.", "page-layer-2-networks-transaction-see-networks": "See networks", + "page-layer-2-network-maturity-component-title": "Network maturity explained", "page-layer-2-network-maturity-component-1": "We review the network’s progress towards", "page-layer-2-network-maturity-component-2": "Ethereum alignment", "page-layer-2-network-maturity-component-3": "total value locked (TVL)", From ea8bec55a25b3090e7d2ced0ec6a071a6ab96240 Mon Sep 17 00:00:00 2001 From: wackerow <54227730+wackerow@users.noreply.github.com> Date: Tue, 12 May 2026 15:38:41 +0200 Subject: [PATCH 2/2] feat(ui): update border-radius to `2xl` token Co-Authored-By: Jakub <100724231+konopkja@users.noreply.github.com> --- src/components/ExpandableCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ExpandableCard.tsx b/src/components/ExpandableCard.tsx index d86d746ccfc..df71f805544 100644 --- a/src/components/ExpandableCard.tsx +++ b/src/components/ExpandableCard.tsx @@ -71,7 +71,7 @@ const ExpandableCard = ({ >